preg_match_all mit PREG_OFFSET_CAPTURE findet nicht alles

NTDY

Erfahrenes Mitglied
Code:
PHP:
<?php
$motiv_col="DD";
$collector="SUEEDEEEDDDEEUUEUUEDE";
preg_match_all("/$motiv_col/","$collector",$ausgabe, PREG_OFFSET_CAPTURE  );
echo "<pre>";
print_r($ausgabe);
echo "</pre>";			
?>

Ausgabe:
Code:
Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => DD
                    [1] => 8
                )

        )

)

Meiner Meinung sollte aber auch
Code:
            [0] => Array
                (
                    [0] => DD
                    [1] => 9
                )
da stehen, da an Position 9 ja auch noch einmal ein Doppel-D auftaucht.

Wie kann ich preg_match_all dazu bringen, dass er mir alles ausgibt?
 
Tatsächlich ein unerwartetes Verhalten. Probier mal folgende Funktion (sollte sich bis auf Genanntes wie preg_match_all() verhalten):
PHP:
function preg_match_all2( $pattern, $subject, &$matches, $flags=PREG_PATTERN_ORDER, $offset=0 )
{
	$i = 0;
	$matches = array();
	while( preg_match($pattern, $subject, $match, PREG_OFFSET_CAPTURE, $offset+1) ) {
		foreach( $match as $r => $m ) {
			$matches[$r][] = $m;
		}
		$offset = $match[0][1];
		$i++;
	}
	return $i;
}
 
Zurück