Я работаю над функцией замены bb-кода, когда пользователь хочет отправить смайлик.php preg_match_all preg_replace array issue
Проблема заключается в том, что если кто-то использует смайлик bb-кода, который не существует, это приводит к пустой записи, поскольку браузер не отображает (несуществующий) смайлик.
Вот мой код до сих пор:
// DO [:smiley:]
$convert_smiley = preg_match_all('/\[:(.*?):\]/i', $string, $matches);
if($convert_smiley)
{
$string = preg_replace('/\[:(.*?):\]/i', "<i class='icon-smiley-$1'></i>", $string, $convert_smiley);
}
return $string;
ББ-код смайлик обычно выглядит [:smile:]
или как [:sad:]
или как [:happy:]
и так далее.
Код выше работает хорошо, пока кто-то не разместит bb-код, который не существует, поэтому то, о чем я прошу, является исправлением для не существующих смайликов.
Есть ли возможность, например, создать массив, например array('smile', 'sad', 'happy')
, и будет преобразован только bb-код, который соответствует одному или нескольким в этом массиве?
Итак, после исправления, размещение [:test:]
или просто [::]
не должно быть преобразовано и должно быть опубликовано в качестве исходного текста, в то время как [:happy:]
будет преобразовано.
Любые идеи? Благодаря!
Это самое простое обходное решение, а также самое близкое решение для моего вопроса и кода, так что даже другие ответы правильны, ваш ответ будет отмечен как правильный. Спасибо – lickmycode
Извините, вам нужно отменить его, ваше решение провалится, когда один смайлик неверен, но все остальные, тогда смайлик не преобразуется. : / – lickmycode