2015-10-17 2 views
-3

Я пытаюсь заменить smileycodes тегом img.PHP заменить смайлик img тегом

Я хочу, чтобы заменить это:

:blush: 

по:

<img src='images/blush.png' /> 

"краснеть" является variabele, так что это может быть любой смайлик.

Я должен заменить все между двоеточиями. Я не знаком с регулярным выражением.

Вы можете мне помочь?

ответ

2

Для многократной замены лет u может использовать str_replace с массивами вместо строк для поиска, имея массив для смайликов, которые будут заменены значениями второго массива. Но вам нужно настроить все значения в массивах, что является статичным.

Другим решением было цикл по возможных смайлик-кодов и сделать str_replace для каждого из него:

$possibleCodes = array('blush', 'smiley2', 'smiley3'); 
foreach($possibleCodes as $code) { 
    str_replace(':'.$code.':', "<img src='images/".$code.".png'", $yourString); 
} 

Для этого требуется, чтобы иметь имя изображения такой же, как смайлик-кода.

+0

Спасибо! Вы код работает! :) – Simon911

1

Зачем использовать регулярное выражение, если вы не знакомы с ним? Это очень просто и легко обойтись без регулярного выражения.

str_replace(":blush:", "<img src='images/blush.png' />", $myString); 
+0

Спасибо, но «румяна» - это переменная. Я не хочу делать это для каждого смайлика. Поэтому я хочу заменить все между коллонами. – Simon911

+1

@ Simon911 использует оператор switch, определяющий, какой тип смайлика он есть, затем используйте приведенный выше код и изменяйте ': blush:' в любом случае. – Script47

+0

Можете ли вы привести мне пример? – Simon911

1

Вы можете использовать preg_replace вроде как

preg_replace('~(:blush:)~','<img src="images/blush.png" />',$your_string); 

Отредактировано

Если у вас массив строку для замены, то вы можете просто использовать str_replace вроде как

$find_array = array('blush', 'smiley2', 'smiley3'); 
$replace_array = ['<img src="images/blush.png" />','<img src="images/smiley2.png" />','<img src="images/smiley3.png" />'] 

str_replace($find_array,$replace_array,$your_string); 
+0

Это заменит все значения в двойных точках тегом изображения - даже это недействительный код для смайлика. Также каждый код смайла заменяется blush.png, что, вероятно, неверно. – ynnus

+0

Обновите свой ответ @ynnus –