Homepage selbermachen 7.846 Themen, 35.563 Beiträge

Wie bekommt man eine Schleife in eine Schleife?

rutzel / 3 Antworten / Flachansicht Nickles

Hallo ich habe folgendes Problem. Ich will einen Text vergleichen mit einer Reihe von wörtern:

Die Worte, die zum Vergleich dienen, sind in einem Array, der sich ständig erweitern wird.

$worte = array("Zahnpasta","Zahnbuerste");

Dann soll ein Text, dessen Länge ungewiss ist, bzw. auf jeden Fall länger, mit diesen Worten abgeglichen werden.

Der Text wird durch explode(); so zertrennt, dass die Leerzeichen als Explode-Hinweis dienen, also so:

$text ="Das hier ist ein Text mit Zahnbürste aber ohne Zahnpastaa, weil das falsch geschrieben ist";

Nun soll das in einer for() Schleife verglichen werden, doch wie bringe ich die beiden Schleifen richtig unter bzw. kombiniere sie?

$text = explode (" ",$text);

for($i=0;$i<=count($text);$i++)
{
$compare[]= strcmp("$text[$i]","<font color=red">$worte[1]"</font>);

}

Ich bin ratlos vielleicht weiss jemand Rat

bei Antwort benachrichtigen
xafford rutzel „Wie bekommt man eine Schleife in eine Schleife?“
Optionen

Darf ich mal etwas verwirrt fragen, warum Du den Text überhaupt zerlegst mittels explode()? Auf den ersten Blick sieht es so aus, als wolltest Du nur gewisse Worte aus einem Suchfeld anderst formatieren. Da wäre dein Vorgehen ein absoluter Performance-Overkill. Nebenbei benutzt man auch das Font-Tag nicht mehr zur Formatierung. Falls Du also wirklichnur Text ersetzen willst, dann versuch es mal so:

$replaceMap= array(
'Zahnpasta' => '<span class="red">Zahnpasta</span>',
'Zahnbuerste' => '<span class="red">Zahnbuerste</span>'
);

$text= str_replace( array_keys($replaceMap), array_values($replaceMap), $text);

Das dürfte um einen sehr hohen Faktor schneller arbeiten und zudem einfacher zu lesen sein.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen