Ich glaube nicht, aber preg_match hat ein offset
Parameter, und auch ein PREG_OFFSET_CAPTURE
Flag, das, wenn kombiniert, verwendet werden kann, um die "nächste Übereinstimmung" zu bekommen.
Dies ist vor allem dann nützlich, wenn Sie nicht wollen, alle Ergebnisse zu bekommen und dann array_slice()
ein Teil aus: o)
EDIT: Ok, hier ist ein Code (nicht getestet oder in irgendeiner Art und Weise verwendet wird):
$offset = 0;
$matches = array();
for ($i = 0; $i < 20; $i++) {
$results = preg_match('/<p(?:.*?)>/', $string, PREG_OFFSET_CAPTURE, $offset);
if (empty($results)) {
break;
} else {
$matches[] = $results[0][0];
$offset += $results[0][1];
}
}
Prost Gumbo , dieses DOM-Zeug ist wirklich nützlich. Nie versucht, das anstelle von reg ex auf HTML zu verwenden, also geben Sie es los! – Franco
@SiQ: Beachten Sie, dass * DOMDocument * das von W3C angegebene DOM implementiert und daher ziemlich umfangreich ist; Wenn Sie nur das DOM lesen müssen, können Sie auch [* SimpleXML *] (http://php.net/book.simplexml) ausprobieren. – Gumbo
Ihre DOMDocument-Lösung schränkt den Code auch nachträglich ein, oder? Es legt kein Limit fest, ignoriert jedoch die zusätzlichen Tags, die es gesammelt hat. – bozdoz