Заменить все совпадения в строке, которая соответствует значениям массива

У меня есть строка, которую я проверяю на совпадения с использованием моего массива, и, если есть какие-либо совпадения, я хочу заменить эти совпадения на те же слова, но просто с красным цветом, а затем вернуть всю строку с цветными словами, включенными в один кусок. Вот что я попробовал:

$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() не может быть массивом. Как это побороть?

0

Решение

Самый базовый подход будет 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>";
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector