Просмотр полной версии : php/Работа с текстом из echo
Здравствуйте!
Скажите пожалуйста как на php можно изменить полученный текст...
Вообщем:
есть страница test.php
<?php
echo file_get_contents("ftp://login:pass@test.ru/test2.php");
?>
Эта странца выводит примерно следующее:
<p> <a href=000001.htm target=_blank>000068</a> Разный текст
<p> <a href=000002.htm target=_blank>000068</a> Разный текст
<p> <a href=000003.htm target=_blank>000068</a> Разный текст
<p> <a href=000004.htm target=_blank>000068</a> Разный текст
<p> <a href=000005.htm target=_blank>000068</a> Разный текст
Нужно сделать так чтобы скрипт заменял 00000*.htm на test.ru/?test=00000*.png
Возможно ли это?
Помогите пожалуйста...
file_get_contents возвращает строку, а echo ее выводит. Обрабатывать надо ДО вывода, и лучше массив, а не строку.
Для получения содержимого файла в массиве пользуй file(). Затем пробегись по элементам этого массива и произведи замену. Думаю, лучше использовать regexp.
Пробовал так:
<?php
// Получить содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file ('ftp://login:pass@test.ru/test2.php');
// Осуществим проход массива и выведем номера строк и их содержимое в виде html-кода.
foreach ($lines as $line)
{
preg_match("[p][b][0-9][0-9][0-9][0-9][0-9][0-9][.][h][t][m]",$line,$replacement);
echo preg_replace("[p][b][0-9][0-9][0-9][0-9][0-9][0-9][.][h][t][m]", "redirect.php?htm=".$replacement[0], $line);
}
?>бесконечно пишет:
Warning: preg_match() [function.preg-match]: Unknown modifier '[' in H:\home\10rus\www\test.php on line 8
Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in H:\home\10rus\www\test.php on line 9потом так:
<?php
// Получить содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file ('ftp://login:pass@test.ru/test2.php');
// Осуществим проход массива и выведем номера строк и их содержимое в виде html-кода.
foreach ($lines as $line)
{
preg_match("[p][b][0-9]{6}[.][h][t][m]",$line,$replacement);
echo preg_replace("[p][b][0-9]{6}[.][h][t][m]", "redirect.php?htm=".$replacement[0], $line);
}
?> аналогично...
Помогите составить шаблон для pb******.htm
Спасибо...
$line = preg_replace('#([\d]+)(\.htm)+#', '"http://test.ru/?test=\\1.png"', $line);
Сделал так:
<?php
// Получить содержимое файла в виде массива. В данном примере мы используем
// обращение по протоколу HTTP для получения HTML-кода с удаленного сервера.
$lines = file ('ftp://login:pass@test.ru/test2.php');
// Осуществим проход массива и выведем номера строк и их содержимое в виде html-кода.
foreach ($lines as $line)
{
preg_match('#(pb)(/[\d]+)(\.htm)+#',$line,$replacement);
echo preg_replace('#(pb)(/[\d]+)(\.htm)+#', 'http://test.ru/?test=\\1.htm', $line);
}
?> pb******.htm
а должен
http://test.ru/?test=pb******.htm
В цикле достаточно одной строки. Прежде, чем менять регулярное выражение, выучи, как это работает. В частности, что есть скобки.
foreach ($lines as $line)
{
echo preg_replace('#([\d]+)(\.htm)+#', '"http://test.ru/?test=\\1.png"', $line);
}
Было:
<p> <a href=000001.htm target=_blank>000068</a> Разный текст
Стало:
<p> <a href="http://test.ru/?test=000001.png" target=_blank>000068</a> Разный текст
Спасибо, теперь понятно... )
Возникла новая проблема, никак не могу совладать с этими выражениями...
Вообщем нужно выдрать из переменной $test (она содержит html код страницы), все ссылки такого вида и запихать их в массив:
<a href="http://78.108.179.238/downloadp1/c97cd3605464_915997984/585650/letitbit.net/temp.rar" title="Ваша ссылка на скачивание файла" target="_self"><b><u>Ваша ссылка на скачивание файла</u></b></a>
Известно только имя temp.rar, всё остальное меняется...
Брать нужно только саму ссылку:
http://78.108.179.238/downloadp1/c97cd3605464_915997984/585650/letitbit.net/temp.rar
Сделал так:
preg_match('/http:\/\/[0-9,a-z,A-Z,.,\/,_]*'.$name.'/', $TextBody, $TempRegExp);
vBulletin® v3.8.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot