|
|
|
| Хочу с помощью str_replace сделать замену смайликов в гостевой книге!!!
И впринципе это получалось когда я прописывал str_replace непосредственно для каждого смайлика, тоесть так
<?php
$msg=str_replace("*чмок","<a href=# onClick=\"javascript:tag(' *чмок ',''); return false\" href=#><img src='smail/chmok.gif'></a>","$msg");
$msg=str_replace("*лол","<a href=# onClick=\"javascript:tag(' *лол ',''); return false\" href=#><img src='smail/lol.gif'></a>","$msg");
$msg=str_replace("*ы","<a href=# onClick=\"javascript:tag(' *ы ',''); return false\" href=#><img src='smail/i.gif'></a>","$msg");
$msg=str_replace("*1ы","<a href=# onClick=\"javascript:tag(' *1ы ',''); return false\" href=#><img src='smail/1i.gif'></a>","$msg");
$msg=str_replace("*куку","<a href=# onClick=\"javascript:tag(' *куку ',''); return false\" href=#><img src='smail/kuku.gif'></a>","$msg");
?>
|
Но это стало ужасно неудобно! Потому что при добавлении нового смайлика мне приходилось вручную дописывать эти строки в guest.php и я решил сделать это так
<?php
$smailik=@file($smail_base);
$sm_long=count($smailik)-1;
for($sm=$sm_long;$sm>=0;$sm--)
{
list($show_smail,$zap_smail)=explode("||",$smailik[$sm]);
$msg=str_replace("$zap_smail","$show_smail","$msg");
}
?>
|
Но так почему то не работает!!! Точнее сказать работает но не доконца как надо!!!
Смайлы выводятся не все а лишь некоторые! И ссылки в форму то же почемуто не работают!!!
подскажите пожалуйста в чём причина или как это сделать подругому!!!
Все эти операции проводятся в 236-242 строчках файла guest.php | |
|
|
|
|
|
|
|
для: m@rchello
(08.01.2006 в 09:03)
| | А какова структура файла $smail_base? | |
|
|
|
|
|
|
|
для: cheops
(08.01.2006 в 12:54)
| | вот такая
<a href=# onClick=\"javascript:tag(' :) ',''); return false\" href=#><img src='smail/1.gif' alt=':)'></a>||:)
<a href=# onClick=\"javascript:tag(' :-) ',''); return false\" href=#><img src='smail/1).gif' alt=':-)'></a>||:-)
<a href=# onClick=\"javascript:tag(' :( ',''); return false\" href=#><img src='smail/2.gif' alt=':('></a>||:(
<a href=# onClick=\"javascript:tag(' *1ы ',''); return false\" href=#><img src='smail/1i.gif' alt='*1ы'></a>||*1ы
<a href=# onClick=\"javascript:tag(' *чмок ',''); return false\" href=#><img src='smail/chmok.gif' alt='*чмок'></a>||*чмок
<a href=# onClick=\"javascript:tag(' *ы ',''); return false\" href=#><img src='smail/i.gif' alt='*ы'></a>||*ы
|
| |
|
|
|
|
|
|
|
для: m@rchello
(08.01.2006 в 12:57)
| | Понятно... вынесите строку
<?php
list($show_smail,$zap_smail)=explode("||",$smailik[$sm]);
?>
|
из массива не гоже на каждом цикле производить преобразования, а после этой строки добавьте код
<?php
for($i = 0; $i < count($zap_smail); $i++) $zap_smail[$i] = trim($zap_smail[$i]);
?>
|
Дело в том, что если файл создавался в Windows, то строки заканчиваются последовательностью \r\n, в UNIX принята последовательность \n и функция file() не расчитывает на невидимый символ \r, оставляя его в строке - он и мешает нормальному преобразованию смайликов. | |
|
|
|
|
|
|
|
для: cheops
(08.01.2006 в 13:10)
| | Всмысле вынести эту строку????
Покажите пожалуйста на этом кусочке кода
<?php
$smailik=@file($smail_base);
$sm_long=count($smailik)-1;
for($sm=$sm_long;$sm>=0;$sm--)
{
list($show_smail,$zap_smail)=explode("||",$smailik[$sm]);
$msg=str_replace("$zap_smail","$show_smail","$msg");
}
?>
|
| |
|
|
|
|
|
|
|
для: m@rchello
(08.01.2006 в 13:26)
| | Я вот что имею ввиду
<?php
$smailik=@file($smail_base);
$sm_long=count($smailik)-1;
list($show_smail,$zap_smail)=explode("||",$smailik[$sm]);
for($i = 0; $i < count($zap_smail); $i++) $zap_smail[$i] = trim($zap_smail[$i]);
for($sm=$sm_long;$sm>=0;$sm--)
{
$msg=str_replace("$zap_smail","$show_smail","$msg");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.01.2006 в 13:31)
| | извините что так долго не заходил!!! Попробовал как вы показали но почему то не работает!!! Смайлы вообще не показываются и какие-то ошибки выводит да и сервер подвисает!!!! :( | |
|
|
|
|
|
|
|
для: m@rchello
(11.01.2006 в 18:16)
| | Хм... странно, а предыдущий ваш скрипт, работает (без зависаний)? | |
|
|
|
|
|
|
|
для: cheops
(11.01.2006 в 23:38)
| | В этом то и дело что когда я писал у меня тоже вис сервер и когда он всё таки догружал то выводил лишь некоторые смайлы и какие то ошибки! посмотрите в выше прикреплённом архиве! Там именно как я пытался сделать! А как вы показали он виснет и когда догружает страницу то смайлов нет вообще!!! | |
|
|
|
|
|
|
|
для: m@rchello
(12.01.2006 в 08:36)
| | А какие ошибки выводил сервер? | |
|
|
|
|
|
|
|
для: cheops
(12.01.2006 в 11:20)
| | извиняюсь я не про то сказал всмысле в моём варианте все норм работает просто смайлы не все отображаются и ссылки для добавления смайла в форму не работают!!
А вот в вашем варианте такие
Notice: Undefined variable: sm in x:\home\test.ru\www\guest.php on line 238
Notice: Undefined index: in x:\home\test.ru\www\guest.php on line 238
Notice: Undefined offset: 1 in x:\home\test.ru\www\guest.php on line 238 | |
|
|
|
|
|
|
|
для: m@rchello
(12.01.2006 в 11:36)
| | Опа... а я и не заметил, что вы ссылаетесь на элемент массива, тогда давайте всё обратно в цикл поместим, в общем, код в моём представлении должен выглядеть следующим образом:
<?php
$smailik=@file($smail_base);
$sm_long=count($smailik)-1;
for($sm=$sm_long;$sm>=0;$sm--)
{
list($show_smail,$zap_smail)=explode("||",$smailik[$sm]);
$zap_smail = trim($zap_smail);
$msg=str_replace("$zap_smail","$show_smail","$msg");
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.01.2006 в 11:46)
| | Вот теперь всё хорошо выводится и грузится но смайлы всёравно не добавляются в форму! | |
|
|
|
|
|
|
|
для: cheops
(12.01.2006 в 11:46)
| | Всё разобрался с ссылками!! :-) Спасибо вам огромное!!! :-) | |
|
|
|