На самом деле эта проблема не должна быть такой сложной, но я искал ее в stackoverflow, но не смог найти ничего, что работает так, как я хочу или могу понять. Вот что я прошу:
Изображение есть текст как:
«Привет, сегодня высокая температура»
Я хотел бы заменить строку «hi» на «al», но не хочу, чтобы слово high было заменено на «algh». Я знаю, что мне нужно использовать функцию preg_replace, но я не могу заставить ее работать.
PS: Если вы можете показать свое решение с массивом тоже, я буду более удовлетворен. Как будто есть массив строк, которые нужно изменить, и есть массив строк, которые нужно изменить как.
Спасибо за помощь, спасибо 🙂
Вы можете использовать регулярное выражение с \ b, чтобы заставить его работать.
$string = 'hi today the temperature is high';
$pattern = '/\bhi\b/';
$replacement = 'al';
echo preg_replace($pattern, $replacement, $string);
\ б установить положение на границе слова (^ \ w | \ w $ | \ W \ w | \ w \ W)
Я бы порекомендовал использовать негативный взгляд против непробельного символа \S
,
Это приводит к простому регулярному выражению hi(?!\S)
:
<?php
$string = "hi today the temperature is high";
$string2 = preg_replace('/hi(?!\S)/', 'al', $string);
echo $string2; // "al today the temperature is high";
Это видно работает Вот.
Обратите внимание, что это будет охватывать только те строки, которые Начните с hi
, Для того, чтобы исключить строки, которые имеют текст перед hi
(лайк sushi)
вам понадобится негативный взгляд сзади также:
<?php
$string = "I eat sushi - hi today the temperature is high";
$string2 = preg_replace('/(?<!\S)hi(?!\S)/', 'al', $string);
echo $string2; // "I eat sushi - al today the temperature is high";
Это видно работает Вот.
Надеюсь это поможет! 🙂
For example:
<?php
$arrFrom = array("1","2","3","B");
$arrTo = array("A","B","C","D");
$word = "ZBB2";
echo str_replace($arrFrom, $arrTo, $word);
?>
I would expect as result: "ZDDB"However, this return: "ZDDD"(Because B = D according to our array)
To make this work, use "strtr" instead:
<?php
$arr = array("1" => "A","2" => "B","3" => "C","B" => "D");
$word = "ZBB2";
echo strtr($word,$arr);
?>
This returns: "ZDDB"