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
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Hab zwar nicht wirklich verstanden was Du vorhast und wo das Problem liegt, aber was spricht dagegen die Schleifen zu verschachteln und die Wörter mit einem zweiten Index zu durchlaufen? Deutliche bequemer und vermutlich auch etwas schneller es wohl mit den Array-Funktionen zu testen ob das gesuchte Wort in der Liste enthalten ist...
Ich würde mal mit in_array() "spielen". Damit kannst du quasi in einem Array suchen und machst aus deinem großen Script einen paar wenige Zeilen, wenn es das ist, was du überhaupt suchst.
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.