str_replace und gleichzeitiger Counter

Wolfsbein

Erfahrenes Mitglied
Folgendes Problem: Ich ersetze mit $out=str_replace($pattern, $begin, $out); Zeichenketten. Wie kann ich gleichzeitig, oder auch vorher ermitteln, wie oft $pattern in $out vorkommt?
Ich habe das ganze schon in eine while Schleife gepackt, aber die läuft sich tot.
 
Why use php.net when tutorials.de gives me an answer?
tsts...

substr_count()

PHP:
$out2low = strtolower($out);
$pattern2low = strtolower($pattern);
$cnt = substr_count($out2low, $pattern2low);

das "lowern" ist notwendig, da substr_count() binär arbeitet.

falls der start nach hinten verschoben werden soll, lösche den anfang der zeichenkette.
 
Danke. Ich habe hier ein Buch als Referenz rumliegen und da steht die Funktion nicht drin. Aber du hast recht. Das nächste mal erst schauen dann fragen.
 
ich habe die referenz von jörg krause.

aber der vertraue ich auch nciht mehr. ^^

php.net/funktion dahinter ist immer sicherer...
 
Ich hab das mal so gemacht:

PHP:
if(@preg_match_all($pattern,$out,$match))
{
for($i=0;$i<count($match[1]);$i++) //$match[ zahl musst du angleichen ]
{
$out=eregi_replace($match[1][$i], $begin, $out);
}
}

Und da lief sich nichts zu tode, weils erst mal schaut obs vorkommt und die gefundenen matches in ein array speichert und dann kannste gezielt die gefundenen sachen replacen.

Meine variante wär günstig wenn $pattern regex drin hat.
 
@mr_d2254: Deine Lösung ist natürlich mustergültig und gut erweiterbar. Für mein Problem aber zu umständlich.
 
Zurück