Можно создать дубликат:
Replace a list of emoticons with their imagesRegex preg_replace для смайликов
я занимаюсь разработкой веб-сайт, где я хочу, чтобы дать пользователям возможность поставить улыбки на столбах. Мой (только функциональная) Идея заключается в том, чтобы использовать массив таким образом:
$emoticons = array(
array("17.gif",":)"),
array("6.jpg",":P"),
.....
array("9.jpg",":'("),
array("5.gif","X)")
);
с изображением на [0] и смайлик на [1]. И на каждом $ пост:
foreach($emoticons as $emoticon){
$quoted_emoticon = preg_quote($emoticon[1],"#");
$match = '#(?!<\w)(' . $quoted_emoticon .')(?!\w)#';
$post = preg_replace($match,'<img src="images/emoticons/'.$emoticon[0].'">',$post);
}
Это работает хорошо, но моя проблема заключается в том '#(?!<\w)('
и ')(?!\w)#'
, потому что я хочу смайликов применять только тогда, когда предшествующие символы, «начинаются» (^
) или «пустой» и последующие символы «конец» ($
) или «пустой». Какое правильное регулярное выражение сделать это?
Вы хотите смайлики должны быть заменены только в начале или в конце вашей строки? –
Нет, везде ... даже в начале или в конце ... точно так же, как любой другой форум ... –