IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   preg replace (http://www.imho.ws/showthread.php?t=55315)

shuron 31.03.2004 18:53

preg replace
 
PHP код:

 for($i=0$i count($title); $i++)
         {
$text preg_replace("/^\[IMG\:(\d+)\]/","<center><img src=\"../kit/picture.php?pid=\\1\" title=\"".$title[0][$i]."\"></center>",$text);
        } 

вот это должно по идее находить и заменять по одному.. все
[IMG:12] на <center><img src=\"../kit/picture.php?pid=12" title="бля бля бля"></center>
вот бля бля и содержится в $title...

но это меняет только первую [IMG: ... на картинку а остальные не трогает...
подскажите где торможу

Saruman 31.03.2004 19:02

shuron
вместо
"/^[IMG:(d+)]/"
имхо нужно
"/[IMG:(d+)]/"

medved2002 31.03.2004 19:04

preg_replace('/\[IMG:(\d+)\]/', "<center><img src=\"../kit/picture.php?pid=$1\" title=\"Титле\"></center>", '[IMG:12]');

Как минимум надо еще вместо [ поставить \[. Ибо [ - управляющий символ

shuron 31.03.2004 19:05

ну да тогда он меняет всё.. это верно...
но title= тогда тоже везде одинаковый... последний в массиве... странно тоже...

medved2002 31.03.2004 19:08

Ясен пень что везде одинаковый. Чего ты хотел? Он тебе в первом же цикле все подобные выражения меняет, а в следющих циклах их уже нет за место них стоит тег ИМГ

shuron 31.03.2004 19:08

medved2002

Что-то ты не так вопрос понял помойму..

medved2002 31.03.2004 19:09

Юзай /e или str_replace

shuron 31.03.2004 19:12

medved2002
а почемуже тогда в title значение послуднего титле во втором случае выходит...
тоесть значение последнего прохождения цыкла

Добавлено через 1 минуту:
medved2002

дай пример со strreplace-- тут целый парсер надо строить так как.
длина цыфры в [IMG:... постоянно различная

medved2002 31.03.2004 19:14

Ну смотри
у тебя есть текст "[IMG:0] ывралфыв [IMG:1] ывмрывфлоалы [IMG:2]";

начинаем цикл. первый заход
$i = 0; $i<3{

выполняем прег_репласе на выходе получаем следующее
Код:

"<center><img src="../kit/picture.php?pid=0" title="Титле"></center> ывралфыв <center><img src="../kit/picture.php?pid=1" title="Титле"></center> ывмрывфлоалы <center><img src="../kit/picture.php?pid=2" title="Титле"></center>"
}
Вопрос: Найдет ли прег_репласе в следующем цикле в этом тексте что либо похожее на [IMG:(\d)]?

shuron 31.03.2004 19:20

нет конечно...

ну так какой второй шаг...

Добавлено через 4 минуты:
погоди я догадываюсь ищем srreplace.. "title='Титле'"
и потом заменяем на тот что в массиве..

medved2002 31.03.2004 19:21

Второй шаг. Чего ты хочешь сделать?

То есть у тебя в массиве title[0] описалово всех картинок которые могут быть в тексте?

shuron 31.03.2004 19:24

да...!!

и теперь я попробую так сделать...
но сначало надо перекусить...

спасибо! лови 5

medved2002 31.03.2004 19:27

Это со стррепласе

for($i=0; $i < count($title); $i++) {
$text = str_replace("[IMG:$i]","<center><img src=\"../kit/picture.php?pid=\1\" title=\"".$title[0][$i]."\"></center>",$text);
}

Есть вариант заставить прег репласе каждый раз когда он находит совпадение выполнять некую функцию и заменять совпадение на результат выполнения этой функции

Добавлено через 3 минуты:
Ну я уж закончу с прег_репласем

function retImg($i){
global $title;
return '<center><img src=\"../kit/picture.php?pid='.$i.'\" title=\"'.$title[0][$i].'\"></center>';
}
$text = preg_replace('/\[IMG:(\d+)\]/e', "retImg($1);", $text);

shuron 31.03.2004 19:27

странно но так у меня не работает смотри мой второй топ.

medved2002 31.03.2004 19:29

Чего говорит? Какой код?

shuron 31.03.2004 19:35

щас попробую твой второй вариант..
а что $1 - это и будет та цыфра...

Добавлено через 5 минут:
Warning: Compilation failed: unmatched parentheses at offset 8 in /home/h_shuron/web/de/tusovoditel/www/news/index.php on line 67

вот что говорит.. на твой второй выриант с функцией
67 это строчка с preg_replace

medved2002 31.03.2004 19:45

Ага. Она и будет. Ты только потом скинь код который у тебя не работал - чисто в исследовательских интересах

Добавлено через 3 минуты:
А ты точно скопировал паттерн для прег_реплейса? Вроде как он на него ругается.

Добавлено в ту же минуту:
У меня все выполняется на ять

Добавлено через 5 минут:
Есть подозрение что у тебя в этом паттерне /\[IMG:(\d+)\]/e пропало :( - ушло в смайлик.

shuron 31.03.2004 19:56

Да ты прав имменно в смайдик и ушло...
и ещё одну ошибочку допустил подгоняя под собственные нужды..
теперь всё работает на ура..
спасибо!!!!

medved2002 31.03.2004 19:58

Со стрреплейсом у тебя чего не работало?

shuron 31.03.2004 20:00

сос стрреплейсом я не стал делать.. второй вариант мне больше понравился...
всего один пробег по тексту...;)


Часовой пояс GMT +4, время: 08:51.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.