Я хочу найти свою строку и заменить некоторые слова ссылкой на какую-то страницу. , но у меня проблема с похожими словами типа «Помощь» и «Помогите мне». Я хочу связать «Помогите мне», а не «Помощь». это мой код:с выпуском preg_replace и схожие слова в php
$text="Please Help Me Fix This Issue!";
$AllTags=[];
$AllTags[]='Help';
$AllTags[]='Help Me';
$tmp = array();
foreach($AllTags as $term){
$tmp[] = "/($term)/i";
}
echo preg_replace($tmp, '<a href="$0">$0</a>', $text);
Если вы хотите связать «Помогите мне», тогда не включайте «Справка» в свой массив 'AllTags'. –
Вы строите шаблон динамически? Или во время разработки? См. Http://ideone.com/Xyb7v2 –
Не используйте массив с 'preg_replace', потому что он обрабатывает всю строку один раз за элемент (с изменениями предыдущих замен). Для этого вы можете: 1) сортировать найденные элементы по размеру строки (от большого до малого). 2) создайте шаблон с чередованием, включающим все отсортированные элементы (используйте 'implode ('|', $ AllTags)'). 3) Обработайте свою строку за один проход с помощью 'preg_replace' с помощью этого шаблона. –