preg_replace в отдельном файле и переменные

hardcenter

Guest
preg_replace в отдельном файле и переменные

Вступление: есть новостная лента, с возможностью добваления рисунка в начале новости. Но модератор потребовал более 1 картинке и где угодно в тексте.

Идея: закачивание картинок и задания переменной (забивая в базу). в тексте ставить [img0], [img1], [img2]... которые будут заменены на картинки.

Цель: заменить [img0] на <img src="<?php echo($img0); ?>">
зная что текст до форматирования: Я нарисовал новую картинку [img0] которая находится посередине текста.
текст после форматирования: Я нарисовал новую картинку <img src="<?php echo($img0); ?>"> которая находится посередине текста.
зная что $img0 - переменная взятая из БД...

Вот что я сделал:
файл index.php
PHP:
include("array.txt");
$sql = "SELECT * FROM news ORDER by 'id' DESC"; 
$result=mysql_query($sql);
while (list($news_text, $img0, $img1, $img2)= mysql_fetch_row($result)):
echo preg_replace($pattern, $replacement, $news_text);
файл array.txt
PHP:
<?php
$pattern[0] = "/\[img0\]/";
$pattern[1] = "/\[img1\]/";
$pattern[2] = "/\[img2\]/";

$replacement[0] = "<br><img src=\"$img0\"><br>";
$replacement[1] = "<br><img src=\"$img1\"><br>";
$replacement[2] = "<br><img src=\"$img2\"><br>";
Результат: не работает :).
echo ($img0) в файле index.php выдаёт значение переменной $img0, т.е. путь к картинке.
есть ли какие предложения :(
третий день бьюсь... и с мануалами... буду рад если поможете.

хостинг на sweb.ru
 

Фанат

oncle terrible
Команда форума
error_reporting(E_ALL);
в начале скрипта

-~{}~ 27.12.04 02:57:

echo ($img0) в файле index.php выдаёт значение переменной $img0
А В ФАЙЛЕ array.txt, в котором она используется - что она выдает?
 

hardcenter

Guest
Фанат
я начинающий, так что если можно, то мне на русском ;)

так, похоже я начал понимать в чём моя ошибка...

в файле array.txt ничего больше нет, ни коннетка к базе, ничего... в кратце он будет выглядить так:
PHP:
<?php
$pattern[0] = "/\[img0\]/";
$replacement[0] = "<br><img src=\"$img0\"><br>";
?>
"так, нутром чую что это пол литра, но как математически выразить незнаю"
я хотел бы чтобы текст был отформатирован так:
до<html>"Это просто [img0] текст"</html>
после <html>"Это просто <img src='<?php print($img0); ?>'>текст"</html>
что в replacement нуна записать?

в том то и дело что в файле array.txt, я хотел бы чтобы $img обрабатывался как текст
а в файле index.php затем $img0 заменялся на своё значение.
 

uchenik

Новичок
По-моему решение твоей задачи умещается в одно регулярное выражение:

PHP:
$text = preg_replace("/\[img(\d+)\]/s", "<img src=http://www.site.ru/images/img\\1.jpg>", $text)
Которое заменит [img3] на <img src=http://www.site.ru/images/img3.jpg>, а [img46] на <img src=http://www.site.ru/images/img46.jpg>.

И не нужно никаких переменных $img1, $img2 и текстовых файлов.
 

Фанат

oncle terrible
Команда форума
hardcenter
не надо повторять свои желания.
я тебе задал вопрос.
так трудно на него ответить?
Ну как ты берешься писать программы, если не можешь понять простого вопроса?
Я спросил: "ЧТО ВЫДАЁТ echo ($img0) в файле array.txt"
И получил ответ "в файле array.txt ничего больше нет".
Это что - шутка такая?

uchenik
Читай вопросы внимательнее, прежде, чем отвечать
 

hardcenter

Guest
Фанат
на вопрос ответить не трудно, просто я хотел добавить ещё элементы ответа, чтобы было понятнее.
echo($img0); в array.txt ничего не даёт.

uchenik
дело в том что файлы закачиваются через форму, а следовательно чтобы их различать, я оставляю их названия AS IS. и записываю это в базу.
в тексте встретится выражение "[img0]" без кавычек. preg_replace должен это заменить на <img src="$img0">, где $img0 - путь к рисунку взятый из базы, вида "/upload/super_image031351354.jpg"
 

Фанат

oncle terrible
Команда форума
чтобы было понятнее.
Ах, это я, оказывается, здесь не понимаю. Это мне надо понятнее объяснять. ну-ну.
echo($img0); в array.txt ничего не даёт.
очень хорошо.
будем дальше соображать за тебя:
что выдаёт echo $replacement[0]; в файле array.txt?
А что должно выдавать?

-~{}~ 27.12.04 14:45:

Собственно, простая мысль, которую я пытаюсь в тебя вколотить , описана вот в этом тексте: PHP FAQ: Ничего не работает! Что делать???

что не два файла не работают.
а не работает ОДНА строчка.
что наути эту строчку вполне по силам программисту самостоятельно.
найти и исправить.
 

hardcenter

Guest
Фанат
Ах, это я, оказывается, здесь не понимаю. Это мне надо понятнее объяснять. ну-ну.
извини, я забыл что юзеры они же ламеры... и что только они нихрена не понимают... и бедная расса модеров от них не может отбиться...

Если бы был мануал нормальный, я бы его бы и почитал, ух как иногда помогает особенно поди линуксом, почитать настроечку самого сервака РНР, proftpd какого нить, или MySQL базы... а ещё есть хорошие мануалы против ублюдков, которые наровят сервак потестить... порнухи покачать... тут приходится --help или ман...

Но конкретно по моей проблеме мануала не нашёл, порпобовал адаптировать на что мозгов хватило - вот и не получилось. Дай думаю спрошу у народа, кто на грабли наступал и как обойти их.

Ладно ближе к делу....
вот что в моём array.txt
PHP:
$replacement[0] = "<br><img src=\"".$img0."\"><br>";
эхо $replacement[0] в index.php выдаёт:
PHP:
<br><img src=""><br>
собсвтенно говоря мне это было ясно что только это и вставляется... появилась идея... в кавычках где адрес рисунка, поставить вот это
PHP:
<?php echo(img0); ?>
т.е. весь replacement должен выглядеть как то так:
PHP:
$replacement[0] = "<br><img src=\"<?php echo(img0); ?>\"><br>";
но зная что ?, >, <, (, ) - это спец символы, то я перед ними попробовал поставить \ , так же как для "
результата нет :(
 

Фанат

oncle terrible
Команда форума
извини, я и предположить не мог, что ты не догадаешься после моих слов, что переменную можно использовать не ДО того, как она определена, а только после.
 

hardcenter

Guest
Фанат
не утруждай только себя ответом, а то смотри ещё пальцы отвалятся...

я как бы лучше сам найду ответ чем на меня будут назжать в этом роде...
PHP:
не надо повторять свои желания.
я тебе задал вопрос.
так трудно на него ответить?
удачи форуму и его модерам
 

Фанат

oncle terrible
Команда форума
наезды тебе только мерещатся.
если тебе кажется констатация факта оскорблением, то ты сам на себя и наехал, получается.

Если просьба ответить на наводящий вопрос кажется тебе оскорблением, то форумы, действитеьлно, не для тебя.
Ищи телепатов, которые не задавая дурацких вопросов сразу догадаются, что ты имел в виду, что тебе нужно было на самом деле, чего ты не понимаешь и что тебе надо объяснить.
Удачи.
 
Сверху