2016-12-02 3 views
2

Как стилизовать определенные слова из заданной строки? я hyave функцию в стиле конкретных слов из данной строки, но это не работает в UTF-8 строкуфункция для стиля конкретных слов на заданной строке utf-8?

header('Content-type: text/html; charset=utf-8'); 
function bold($string, $word) 
{ 
    return preg_replace('/\b'.$word.'\b/', '<strong>'.$word.'</strong>', $string); 
} 

echo bold('چمستان تا', 'تا'); 

Как я могу это сделать? Мне нужно смелое некоторые ключевые слова/фразы в поисковой resut на основе набранный пользователем запроса

Любая помощь будет оценена

+1

Try ' '/ \ Ь' $ слово' \ б/u'' –

+0

ошибка: Warning: preg_replace(): компиляция не удалась: недопустимый UTF-8 строку в offse t 2 – ebrahim

+1

Вы уверены, что ваш файл сохранен в кодировке 'utf-8'? – Dekel

ответ

1

Убедитесь, что:

  • Ваши страницы сохраняются в кодировке UTF8
  • Добавить /u модификатор
  • Лучше preg_quote поиск слово только в случае

Использование

preg_replace('/\b'.preg_quote($word,'/').'\b/u', '<strong>'.$word.'</strong>', $string); 

В качестве альтернативы \b, вы можете использовать не неоднозначные границы слова (нет слов полукокса до или после того, как слово для поиска допускаются):

preg_replace('/(?<!\w)'.preg_quote($word,'/').'(?!\w)/u', '<strong>'.$word.'</strong>', $string); 

или - обеспечивать соблюдение матч внутри непечатаемых:..

preg_replace('/(?<!\S)'.preg_quote($word,'/').'(?!\S)/u', '<strong>'.$word.'</strong>', $string); 
+0

function bold ($ string, $ word) { return preg_replace ('/ (? '. $ word.' ', $ string); } эхо смелое ('hello world', 'hello wo'); почему это не работает, но когда я удаляю «wo», работает – ebrahim

+0

Это не работает, потому что 'hello wo' требует пробела или конца строки после' wo'. В «hello world» нет пробела или конца строки. См. Https://ideone.com/CGX8Pa –

+0

, когда я ищу слово в google моем слове, выделенном жирным шрифтом в результатах поиска в Google, можете ли вы создать такую ​​функцию, как google для меня? – ebrahim

Смежные вопросы