2017-02-19 3 views
0

Ich habe eine Zeichenfolge, die ich mit meinem Array nach Übereinstimmungen sucht und wenn es Übereinstimmungen gibt, möchte ich diese Übereinstimmungen durch dieselben Wörter ersetzen, aber nur rot und dann gib die ganze Saite mit den farbigen Wörtern zurück, die in einem Stück enthalten sind. Dies ist, was ich versucht habe:Ersetzen Sie alle Übereinstimmungen in einer Zeichenfolge, die Array-Werte

$string = 'This is a brovn fox wit legs.'; 
$misspelledOnes = array('wit', 'brovn'); 

    echo '<p>' . str_replace($misspelledOnes,"<span style='color:red'>". $misspelledOnes . "</span>". '</p>', $string; 

Aber natürlich funktioniert das nicht, weil der zweite Parameter von str_replace() kein Array sein kann. Wie man das überwindet?

+1

Es wird auch nicht funktionieren, weil es nicht einmal gültige PHP ist. Ich schlage vor, dass Sie einfach das Array mit 'str_replace()' für jedes Wort durchlaufen. Reguläre Ausdrücke wären effizienter, aber nicht etwas, auf das Sie in diesem Stadium eingehen möchten. – miken32

Antwort

3

Die meisten würden grundlegende Ansatz eine foreach loop über die Kontrollworte sein:

$string = 'This is a brovn fox wit legs.'; 
$misspelledOnes = array('wit', 'brovn'); 

foreach ($misspelledOnes as $check) { 
    $string = str_replace($check, "<span style='color:red'>$check</span>", $string); 
} 
echo "<p>$string</p>"; 

Beachten Sie, dass diese Suche eine einfache Teilzeichenfolge tut. Wenn Sie zum Beispiel "mit" richtig buchstabieren, wird es immer noch davon erfasst. Sobald Sie ein bisschen besser vertraut mit PHP bekommen, könnte man etwas anschaut regular expressions verwendet, die dieses Problem umgehen können:

$string = 'This is a brovn fox wit legs.'; 
$misspelledOnes = array('wit', 'brovn'); 
$check = implode("|", $misspelledOnes); 
$string = preg_replace("/\b($check)\b/", "<span style='color:red'>$1</span>", $string); 
echo "<p>$string</p>"; 
+0

OK, der erste Vorschlag gibt die Zeichenfolge mit nur einem Wort ('wit') in rot zurück. Ich brauche alle Werte aus dem Array, die farblich markiert sind. Das bedeutet, dass 'brovn' auch im Endergebnis farbig sein sollte/Zeichenfolge. – Mkey

+0

Nein, es funktioniert ganz gut, nur lief es selbst. – miken32

+1

Oh, jetzt richtig eingestellt - mein Schlechter. Ihre Lösung funktioniert wirklich! Vielen Dank! – Mkey

Verwandte Themen