У меня есть массив слов и строка и вы хотите добавить хэштег к словам в строке, что они имеют соответствие внутри массива. Я использую этот цикл, чтобы найти и заменить слова:preg replace игнорирует небуквенные символы при обнаружении слов
foreach($testArray as $tag){
$str = preg_replace("~\b".$tag."~i","#\$0",$str);
}
Проблема: позволяет сказать, что у меня есть слово «есть» и «изолировать» в моем массиве. Я получу ## изоляцию на выходе. это означает, что слово «изолировать» найдено один раз для «есть» и один раз «изолировать». И шаблон игнорирует тот факт, что «#isoldated» больше не начинается с «is», и начинается с «#».
я привожу пример, но это только exampl е, и я не хочу просто решить эту одну, а все остальные Possiblity:
$str = "this is isolated is an example of this and that";
$testArray = array('is','isolated','somethingElse');
выход будет:
this #is ##isolated #is an example of this and that