У меня есть строка, которую я проверяю на совпадения с использованием моего массива, и, если есть какие-либо совпадения, я хочу заменить эти совпадения на те же слова, но просто с красным цветом, а затем вернуть всю строку с цветными словами, включенными в один кусок. Вот что я попробовал:
$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;
Но, конечно, это не работает, потому что второй параметр str_replace()
не может быть массивом. Как это побороть?
Самый базовый подход будет foreach
петля по контрольным словам:
$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>";
Обратите внимание, что это делает простой поиск подстроки. Например, если вы правильно написали «с», это все равно будет поймано этим. Когда вы немного познакомитесь с PHP, вы можете посмотреть на что-то, используя регулярные выражения которая может обойти эту проблему:
$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>";
Других решений пока нет …