Преобразование текстовых смайлов в графические

Статус
В этой теме нельзя размещать новые ответы.

WMix

герр M:)ller
Партнер клуба
PHP:
$replace = array('<img src="/tpl/img/smiles/smile.gif" align="absmiddle" />', '<img src="/tpl/img/smiles/cool.gif" align="absmiddle" />');
найди повторяющийся кусок и изменяемый, повторяющий это шаблон, изменяемый данные
хорошб данные связать с этим
PHP:
$smiles = array('*smile*','*cool*');
а дальше только раскручивать
 

Bars

Новичок
Вроде можно через preg_replace(), только вот как? Если известно, что все смайлы имеют в начале и конце знак "*" (*smile*).

Тобишь находить то, что между звёздочек, сверять с допустимыми (чтобы не вставили что-то другое) и прибавлять <img src="..." />, т.е. первая звёздочка меняется на <img src=", а вторая на " />.
 

WMix

герр M:)ller
Партнер клуба
Bars
я вот не понимаю, ты знаешь как делать но лень читать?
 

WMix

герр M:)ller
Партнер клуба
Bars
красивый и тонкий намек звучит так...
"а слабо через preg_replace решить?"
 

Bars

Новичок
Мне надо заменять только то, что со звёздочками. Как это написать?
 

nds88

Новичок
Может быть так?
$text = $_POST['text']; // У себя я это дело обрабатываю
$smiles = array('smile', 'winked', 'cool');
foreach ( $smiles as $val ) {
preg_replace( "/\*$val\*/" , '<img src="/tpl/img/smiles/'.$val.'.gif" align="absmiddle" />', $text);
}
 
  • Like
Реакции: Bars

Bars

Новичок
Не работает. Смайлы так и остались текстовыми:
PHP:
$smiles = array('smile', 'winked', 'cool');
	foreach ($smiles as $val){
		preg_replace("/\*$val\*/", '<img src="/tpl/img/smiles/'.$val.'.gif" align="absmiddle" />', $text);
	}
И ещё, если убрать кавычки вокруг /\*$val\*/ (как у Вас), то PHP выдаёт ошибку.
 

nds88

Новичок
Не работает. Смайлы так и остались текстовыми:
PHP:
$smiles = array('smile', 'winked', 'cool');
	foreach ($smiles as $val){
		preg_replace("/\*$val\*/", '<img src="/tpl/img/smiles/'.$val.'.gif" align="absmiddle" />', $text);
	}
И ещё, если убрать кавычки вокруг /\*$val\*/ (как у Вас), то PHP выдаёт ошибку.
Исправил раньше. Дай исходную строку $text
 

fixxxer

К.О.
Партнер клуба
Сжатый и компактный писатель оптимизированного кода.

Надоел уже, на вот, и вали, пока не прочитаешь весь мануал и Котерова - не приходи.

PHP:
function buildSmileImages($text) {
    return preg_replace_callback('/\*([^\B*]+)\*/', function($matches) {
        static $smile_html = '<img src="/tpl/img/smiles/%s.gif" align="absmiddle" />';
        static $known_smiles = array(
            'smile', 'lol', 'angry'
        );
        return in_array($matches[1], $known_smiles) ? sprintf($smile_html, $matches[1]) : $matches[0];
    }, $text);
}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
cDLEON это не причина нарушать правила форума: мат запрещен, оскорбления - так же,

а за говнокод топик можно просто выкинуть
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху