$replace = array('<img src="/tpl/img/smiles/smile.gif" align="absmiddle" />', '<img src="/tpl/img/smiles/cool.gif" align="absmiddle" />');
$smiles = array('*smile*','*cool*');
Он не для веб, насколько я знаю.Пиши на ассемблере
preg_replace_callbackВроде можно через preg_replace(), только вот как?
Приеду домой и попробую.Может быть так?
$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);
}
думаю не нужно говорить, что если в строке больше одного разных смайлов , код нужно немного переписать...Приеду домой и попробую.
$smiles = array('smile', 'winked', 'cool');
foreach ($smiles as $val){
preg_replace("/\*$val\*/", '<img src="/tpl/img/smiles/'.$val.'.gif" align="absmiddle" />', $text);
}
Исправил раньше. Дай исходную строку $textНе работает. Смайлы так и остались текстовыми:
И ещё, если убрать кавычки вокруг /\*$val\*/ (как у Вас), то PHP выдаёт ошибку.PHP:$smiles = array('smile', 'winked', 'cool'); foreach ($smiles as $val){ preg_replace("/\*$val\*/", '<img src="/tpl/img/smiles/'.$val.'.gif" align="absmiddle" />', $text); }
Что содержится в $text?То есть?
Любой комментарий. Например,Что содержится в $text?
Тестовый комментарий *smile*
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);
}