Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите с выводом смайлов
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Помогите с выводом смайлов

Страниц (1): [1]
 

1. Zip - 10 Декабря, 2008 - 12:42:31 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $text = "!smile! Бла бла бла !smilel!"; // текст
  3.  
  4. $sm = array("!smile!","!gg!","!apl!"); // значение смайлов
  5. $img = array('<img src="smile.gif"" alt="!smile!"/>',
  6.              '<img src="gg.gif" alt="!gg!"/>',
  7.              '<img src="apl.gif" alt="!apl!"/>'); // смайлы
  8.  
  9.  
  10.  

Как зделать чтоб в строке заменяло на смайл только первое значение смайла , все остальные значение оставались текстом ?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $text = preg_replace($sm,"$img",$text,1);
  3. // Не катит , потому что заменяет на рисунок разные значение смайла ,
  4. // например !smile! !gg! . А нужно чтоб в сообщении заменяло только первое значение .
  5.  
2. Champion - 10 Декабря, 2008 - 12:55:29 - перейти к сообщению
$text = "!smile! Бла бла бла !smilel! !gg!"; // текст

$smiles['!smile!'] = '1.gif';
$smiles['!smile2!'] = '2.gif';
...
foreach ($smiles as $txt => $img){
$text = str_replace($txt, $img, $text, 1);
}
3. Zip - 10 Декабря, 2008 - 13:09:59 - перейти к сообщению
Champion, Fatal error: Only variables can be passed by reference
и если убрать в str_replace в конце "1" то заменяе всё в подрят, а мне нужно чтоб только одно зачение заменяло
4. Champion - 10 Декабря, 2008 - 13:46:01 - перейти к сообщению
Zip, ошибся, preg_replace
5. Zip - 10 Декабря, 2008 - 15:28:26 - перейти к сообщению
Champion, Я же написал что preg_replace не подходит . Есди в строке будет
!smile!!smile!!smile!apl!!apl!!apl! то выведет два смайла !smile! и !apl! а нужно чтоб только первый !smile! был смайлом а всё остальное оставалось текстом
6. Champion - 10 Декабря, 2008 - 15:59:21 - перейти к сообщению
А последний параметр limit для чего?
7. Zip - 10 Декабря, 2008 - 16:45:24 - перейти к сообщению
Champion пишет:
А последний параметр limit для чего?

Он действует только например если много !smile!!smile!!smile! то он всё делает как надо, заменяет только первое значение , но если !smile!!smile!!apl! то он заменяет одно !smile! и одно !apl! и уже получается в сообщении два смайла ...

 

Powered by ExBB FM 1.0 RC1