Forum Webscript.Ru

Программирование => PHP => Тема начата: Eugene2001 от 04 Августа 2002, 06:37:25

Название: можно ли вставить только часть страницы?
Отправлено: Eugene2001 от 04 Августа 2002, 06:37:25
Пример файла из которого надо выдрать кусок:
=======

текст0


текст1


13333333333333333


вфывыфыфввыфвыф


текст2


текст3


=======

участники форума, подскажите, пожалуйста, можно ли взять из этого файла часть от "

текст1

" до "

текст2

" (именно указав начало и конец отрывка - середина будет меняться и указать точно весь кусок до последней буквы невозможно - не меняются только  "

текст1

" и "

текст2

" ) и вставить ТОЛЬКО ее в другой файл (с помощью include наверное)

или это возможно только вырезая ненужные части с помощью replace?



с уважением,
Евгений
Название: можно ли вставить только часть страницы?
Отправлено: Tronyx от 04 Августа 2002, 08:42:48
Цитировать
или это возможно только вырезая ненужные части с помощью replace?


// $page_text - текст страницы, его загружай как хочешь.
$patr=eregi_replace("

текст1

(.+)

текст2

", "\\\\1", $page_text);
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 04 Августа 2002, 09:30:28
Цитировать
// $page_text - текст страницы, его загружай как хочешь.
$patr=eregi_replace("

текст1

(.+)

текст2

", "\\1", $page_text);
что-то меня терзают сомнения...
Цитировать
из этого файла часть от "

текст1

" до "

текст2

" (именно указав начало и конец отрывка - середина будет меняться и указать точно весь кусок до последней
Tronyx
 зачем replace? если можно просто текст  достать... почему eregi?  в мане пишут,  что преги быстрее...$page_text="

текст

страницы,

его

загружай как хочешь.";
 echo $patr=preg_match("/

текст<\\/p>(.+)

его<\\/p>/", $page_text, $rez);
echo "


".$rez[1];
это выведет "страницы, " в rez[0] находится "

текст

страницы,

его

"
Название: можно ли вставить только часть страницы?
Отправлено: Tronyx от 04 Августа 2002, 09:51:22
Цитировать
Tronyx
зачем replace? если можно просто текст достать... почему eregi? в мане пишут, что преги быстрее...

Да я знаю что преги быстрее будут, но мне легче с регами, а преги всё же нужно подъучить, это я понимаю.
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 04 Августа 2002, 10:16:52
$page_text="

текст

страницы,

его

загружай как хочешь.";
eregi("

текст

(.+)

его

", $page_text, $rez);
echo "
".$rez[1]; это если  ереги
Название: можно ли вставить только часть страницы?
Отправлено: Eugene2001 от 04 Августа 2002, 13:09:19
преги, ереги... у меня уровень понимания все-таки еще не тот...
-------------------

мне надо в

$page_text="

текст

страницы,

его

загружай как хочешь.";

скопировать весь текст страницы?

--------------------------

попробую написать побдробнее чтобы мне хотелось сделать:

====================
у меня есть страница http://www.site.ru/page.php
в нее надо вставить части страницы http://www.site.ru/page2.html

привожу текст страницы page2.html:
------------

текст0


13dsafdsfds333333


текст1


1333333333sdfdsf3


текст2


1333333dsdssdd333


текст3


1dsasad3333333333


текст4


вфывыфыфввыфвыф


текст5


вфывыxcvvcыфвыф


текст6


вфdsadsaasыфвыф


текст7


вфывыфыdsaasadф


текст8


----------

мне нужно вытащить из этой страницы и вставить в http://www.site.ru/page.php два кусочка page2.html - первый с "

текст1

" до "

текст2

"

и второй кусок с "

текст4

" до "

текст6

"

=================
подскажите, пожалуйста, как мне ВЫРЕЗАТЬ эти два кусочка из page.html и ВСТАВИТЬ и в нужные место на страницу page.php?

содержание page.html все время меняется - неизменными остаются только 4 фразы, по которым я собираюсь вырезать эти кусочки:

"

текст1

", "

текст2

", "

текст4

", "

текст6

".




с уважением,
Евгений
Название: можно ли вставить только часть страницы?
Отправлено: Eugene2001 от 04 Августа 2002, 13:36:50
я попробовал вставить include:

$page_text="include(\'http://www.site.ru/page.html\')";
echo $patr=preg_match("MY MKPDKLDSKDSJK(.+)DJJKDJKJKD", $page_text, $rez);
echo "
".$rez[1];
?>

чтобы попытаться выдрать из этого кода (прижу весь текст страницы page.html):
=========
dsalkjjklkldsa jkndsajkdsa oijkdasojkdsa
("MY MKPDKLDSKDSJK dsajjojdsaj
jdsjkldsa DJJKDJKJKD
=========
текст от MY MKPDKLDSKDSJK до DJJKDJKJKD

--------------
но браузер выдал мне ошибку:
Warning: Unknown modifier \'M\' in /users/.../site/page.php on line 24

Line 24 - это:

echo $patr=preg_match("MY MKPDKLDSKDSJK(.+)DJJKDJKJKD", $page_text, $rez);

==============
и еще... а чтобы выдрать второй кусочек из этой страницы, надо опять вставлять весь этот код и он будет ЗАНОВО обрабатывать всю страницу page.html?


помогите, пожалуйста, разобраться


с уважением,
Евгений
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 04 Августа 2002, 13:51:14
$filename = "page2.html";
$fd = fopen ($filename, "rb");
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
preg_match("/

текст1<\\/p>(.+)

текст2<\\/p>/is", $contents, $rez1);
preg_match("/

текст4<\\/p>(.+)

текст6<\\/p>/is", $contents, $rez2);
echo $rez1[1];
echo $rez2[1]; этот код должен быть в page.php
echo $rez1[1]; echo $rez2[1] необходимо разместить в "нужных" местах,  но ниже fread и  preg_match

Или так еще можно выражение переписать
preg_match("/

текст1<\\/p>(.+)

текст2<\\/p>.+

текст4<\\/p>(.+)

текст6<\\/p>/is", $contents, $rez1);
echo $rez1[1];
echo $rez1[2];

Название: можно ли вставить только часть страницы?
Отправлено: Covex от 04 Августа 2002, 14:10:36
Цитировать
$page_text="include(\'http://www.site.ru/page.html\')";
надо RTFM про инклюд, да и про пхп вообще...
Цитировать
$patr=preg_match("MY MKPDKLDSKDSJK(.+)DJJKDJKJKD",
изменяя не разрушай
Название: можно ли вставить только часть страницы?
Отправлено: Макс от 04 Августа 2002, 15:59:25
Eugene2001
http://php.spb.ru
http://phpclub.net/index.phtml?m=7
http://www.webscript.ru/stories.php3?topic=6
http://phpclub.net/talk/showthread.php?s=&threadid=21723 (и там по всем ссылкам)

Все это читаешь, разбираешь, обдумываешь, тестируешь и потом если что не понятно задаешь вопросы.
Или книгу по php купи.

ЗЫ
Не обижайся, но ты задаешь простейшие вопросы. И явно видно что ты не понимаешь что и как работает.
Название: можно ли вставить только часть страницы?
Отправлено: Unregistered от 05 Августа 2002, 16:31:48
спасибо, всем, кто помогал... буду разбираться...


с уважением,
Евгений
Название: можно ли вставить только часть страницы?
Отправлено: я... от 05 Августа 2002, 17:23:04
изврат, но приятно =)))

function ret_needed_str_arr($begin_string="

текст1

",$end_string="

текст2

")
{
 $content=file("your.file");
 $opened=0;
 for($i=0;$i {
  if ($opened==0 AND $content[$i]==$begin_string)
  {
    $opened==1;
  }
  elseif($opened==1 AND $content[$i]==$end_string)
  {
    $opened==0;
  }
  elseif($opened==1 AND $content[$i]!=$end_string)
  {
   $ret_array.=$content[$i];
  }
 }
 return($ret_array);
}
Название: можно ли вставить только часть страницы?
Отправлено: Доктор от 05 Августа 2002, 19:17:32
лучше использовать не count($array), а sizeof($array)
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 05 Августа 2002, 23:51:21
я... а потести, ради прикола, что быстрее...
Название: можно ли вставить только часть страницы?
Отправлено: Eugene2001 от 06 Августа 2002, 00:03:59
я тут нашел скрипт... который тоже работает... причем отменно и просто:

=====================


$url = "http:// URL TO GRAB";
$unique_start = "Unique html code to start grabbing";
$unique_end = "Unique html code to end grabbing";

ini_set(\'max_execution_time\', \'0\');
flush ();
$fd= fread(fopen("$url", "r"), 100000);

if ($fd)
{
$start= strpos($fd, "$unique_start");
$finish= strpos($fd, "$unique_end");
$length= $finish-$start;
$code=Substr($fd, $start, $length);
}


// $code = preg_replace("new code", "old code", $code);
// uncomment the above line to edit the output

echo $code;
flush ();
?>

====================

вот только у меня вопрос... можно ли его модифицировать, чтобы он выдирал ВСЕ удовлетворяющие условиям кусочки, а не брал только первый подходящий кусочек и завершал свою работу...
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 06 Августа 2002, 00:56:56
для представленного Eugene2001 маленького фрагмента page2.html цифры:
preg_match в одну строчку: 0.040130972862244 и  0.040834069252014
2 последоват.  preg_match:  0.04112696647644 0.041241049766541
скрипт... который тоже работает: 0.041285991668701 0.040894985198975
Название: можно ли вставить только часть страницы?
Отправлено: Covex от 06 Августа 2002, 01:07:27
непонятные места в скрипте
Цитировать
который тоже работает

ini_set(\'max_execution_time\', \'0\');
flush ();
 
зачем это сделано?
$fd= fread(fopen("$url", "r"), 100000); ?>
  почему не сделать fclose?
Название: можно ли вставить только часть страницы?
Отправлено: Макс от 06 Августа 2002, 01:35:55
Цитировать
вот только у меня вопрос... можно ли его модифицировать, чтобы он выдирал ВСЕ удовлетворяющие условиям кусочки, а не брал только первый подходящий кусочек и завершал свою работу...
Дык preg_replace и так все вхождения заменяет, может у тебя регексп неправильно написан. Или посмотри в мане preg_replace на тему замены одного массива на другой/