Battle Forum

Battle Forum (http://battlefox.rooty.ru/index.php)
-   Web-программирование / Сайтостроение (http://battlefox.rooty.ru/forumdisplay.php?f=110)
-   -   php/Работа с текстом из echo (http://battlefox.rooty.ru/showthread.php?t=12677)

MorgaN 10.09.2009 15:38

php/Работа с текстом из echo
 
Здравствуйте!
Скажите пожалуйста как на php можно изменить полученный текст...
Вообщем:
есть страница test.php

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

Возможно ли это?
Помогите пожалуйста...

MDM 10.09.2009 15:56

file_get_contents возвращает строку, а echo ее выводит. Обрабатывать надо ДО вывода, и лучше массив, а не строку.
Для получения содержимого файла в массиве пользуй file(). Затем пробегись по элементам этого массива и произведи замену. Думаю, лучше использовать regexp.

MorgaN 10.09.2009 17:27

Пробовал так:
PHP код:

<?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 код:

<?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
Спасибо...

MDM 10.09.2009 17:45

PHP код:

$line preg_replace('#([\d]+)(\.htm)+#''"http://test.ru/?test=\\1.png"'$line); 


MorgaN 10.09.2009 18:17

Сделал так:

PHP код:

<?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

MDM 10.09.2009 18:24

В цикле достаточно одной строки. Прежде, чем менять регулярное выражение, выучи, как это работает. В частности, что есть скобки.
PHP код:

foreach ($lines as $line)
{
     echo 
preg_replace('#([\d]+)(\.htm)+#''"http://test.ru/?test=\\1.png"'$line);


Было:
Код HTML:

<p> <a href=000001.htm target=_blank>000068</a> Разный текст
Стало:
Код HTML:

<p> <a href="http://test.ru/?test=000001.png" target=_blank>000068</a> Разный текст

MorgaN 10.09.2009 18:32

Спасибо, теперь понятно... )

MorgaN 13.12.2009 22:55

Возникла новая проблема, никак не могу совладать с этими выражениями...
Вообщем нужно выдрать из переменной $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

MorgaN 15.12.2009 00:53

Сделал так:
PHP код:

preg_match('/http:\/\/[0-9,a-z,A-Z,.,\/,_]*'.$name.'/'$TextBody$TempRegExp); 



Текущее время: 08:47. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot