Forum Webscript.Ru

Программирование => PHP => Тема начата: Million от 01 Июня 2002, 07:28:56

Название: Вырезать <title></title>
Отправлено: Million от 01 Июня 2002, 07:28:56
Нужно вырезать между , использую следующий скрипт, но он что-то каряво вырезает   <br /><br />$http=@fopen("http://lenta.ru","r");<br />$cont=fread($http,2000);<br />fclose($http);<br />$cont=trim(chop($cont));  <br />$a=strpos($cont,"<title>",0); <br />$b=strpos($cont,"",$a);
$title=substr($cont,$a+7,$b);  

Подскажите пожалуйста, что не так!
Название: Вырезать <title></title>
Отправлено: GotZfild от 01 Июня 2002, 11:21:49
Million
Ошибка у тебя в использовании substr. Третий параметр в ней должен указывать длину вырезаемой строки. То есть тебе нужно:
$a = strpos($cont, "");<br />$b = strpos($cont, "");
$length = $b - $a - 7;
$title = substr($cont, $a + 7, $length);
А вообще, использовал бы regexp и не мучился.
Название: Вырезать <title></title>
Отправлено: Million от 01 Июня 2002, 20:02:50
GotZfild
Спасибо. Если будет возможность напиши пожалуйста как это сделать исползуя regexp.
Название: Вырезать <title></title>
Отправлено: GotZfild от 02 Июня 2002, 12:43:38

$cont = trim(chop($cont));
preg_match("!([^<]+)!iUs", $cont, $matches);
$title = $matches[1];
Теперь этот поиск стал регистронезависимым.
Название: Вырезать <title></title>
Отправлено: Million от 02 Июня 2002, 21:01:43
GotZfild
Очень интересный оператор.
Вот только со строкой
Цитировать
"!([^<]+)!iUs"

возникла сложность в понимании.
Что значат все эти символы?(кроме ):) </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>GotZfild</strong> от <strong>02 Июня 2002, 22:36:21</strong> </dt> <dd class="postbody"> Это, собственно, и есть регулярное выражение. Почитай<br />http://myphp.dem.ru/doc/index.php?regexp-intro </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>Million</strong> от <strong>03 Июня 2002, 09:02:28</strong> </dt> <dd class="postbody"> Спасибо разобрался:)<br />Можно даже так записать<br />preg_match("!<title>([^<]+)<!i", $cont, $matches);<br />Вот только там ничего про "!" не написано.<br />Я так понял, что это тоже самое что и "/". </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>GotZfild</strong> от <strong>03 Июня 2002, 16:17:30</strong> </dt> <dd class="postbody"> <div class="quoteheader"><div class="topslice_quote">Цитировать</div></div><blockquote class="bbc_standard_quote">Можно даже так записать <br />preg_match("!<title>([^<]+)<!i", $cont, $matches); </blockquote><div class="quotefooter"><div class="botslice_quote"></div></div><br />Можно и так, но для пущей надежности все же...<br />А насчет ! - это просто разделитель, вместо него можно использовать все, что угодно. </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>Million</strong> от <strong>05 Июня 2002, 06:35:14</strong> </dt> <dd class="postbody"> GotZfild, а как лучше курсы валют с сайта НБУ взять? </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>GotZfild</strong> от <strong>05 Июня 2002, 13:08:05</strong> </dt> <dd class="postbody"> Что такое НБУ?<br />А насчет вытягивания информации с других сайтов, посмотри http://myphp.dem.ru/lessons/index.php?12 </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>AlieN</strong> от <strong>05 Июня 2002, 13:09:22</strong> </dt> <dd class="postbody"> <strong>Million</strong> <br />Я бы взял с RBC<br /><br />ЗЫ: <br />preg_match("!<title>([^<]+)<!i", $cont, $matches);<br />это можно переписать на<br />ereg("!<title>(.*)<", $cont, $mathces);<br />ИМХО посисковые регулярки работают быстрее </dd> <dt class="postheader"> Название: <strong>Вырезать <title></title></strong><br /> Отправлено: <strong>Макс</strong> от <strong>05 Июня 2002, 14:34:07</strong> </dt> <dd class="postbody"> <div class="quoteheader"><div class="topslice_quote">Цитировать</div></div><blockquote class="bbc_standard_quote">preg_match("!<title>([^<]+)<!i", $cont, $matches); <br />это можно переписать на <br />ereg("!<title>(.*)<", $cont, $mathces); <br />ИМХО посисковые регулярки работают быстрее</blockquote><div class="quotefooter"><div class="botslice_quote"></div></div><br /><br /><br /><?php<br />error_reporting(E_ALL);<br />include("Timer.php");<br />$file=implode("",file("a.html"));<br /><br />// тестим preg<br />$_preg = new Benchmark_Timer;<br />$_preg->start();<br />preg_match("!<title>([^<]+)<\\/title>!i", $file, $matches); <br />print_r($matches);<br />$_preg->stop();<br />echo $_preg->timeElapsed()."\\n";<br /><br />// тестим ereg<br />$_ereg = new Benchmark_Timer;<br />$_ereg->start();<br />eregi("<title>(.*)?<\\/title>", $file, $mathces);<br />print_r($mathces);<br />$_ereg->stop();<br />echo $_ereg->timeElapsed();<br />?><br /><br />результат:<br />Array<br />(<br />    <ul class="bbc_list"><li type="circle"> => <title>sadkfj[1] => sadkfj
)
0.005480
Array
(
   
  • => sadkfj
  • [1] => sadkfj
    )
    0.054973
    Название: Вырезать <title></title>
    Отправлено: GotZfild от 05 Июня 2002, 15:47:54
    Так, начался извечный спор. Ссылочка по теме:
    http://phpclub.net/talk/showthread.php?threadid=19789&rand=21
    Название: Вырезать <title></title>
    Отправлено: Million от 06 Июня 2002, 02:47:56
    GotZfild
    НБУ(Национальный Банк Украины) то же самое, что и ЦБ РФ только в Украине.

    AlieN
    Что такое RBC ?

    Макс
    Как можно узнать сколько все мои  скрипты выполняются?
    Название: Вырезать <title></title>
    Отправлено: AlieN от 06 Июня 2002, 11:09:21
    Цитировать
    Что такое RBC ?

    РосБизнесконсалтинг
    http://www.rbc.ru
    Название: Вырезать <title></title>
    Отправлено: Макс от 06 Июня 2002, 15:10:12
    Million
    Цитировать
    Как можно узнать сколько все мои скрипты выполняются?

    На форуме уже этот вопрос поднимался. Поищи.
    Я использую Benchmark/Timer.php - ищи в  PEAR.
    еще есть ab.exe (apache benchmark)