Forum Webscript.Ru
Программирование => PHP => Тема начата: Million от 01 Июня 2002, 07:28:56
-
Нужно вырезать между , использую следующий скрипт, но он что-то каряво вырезает
$http=@fopen("http://lenta.ru","r");
$cont=fread($http,2000);
fclose($http);
$cont=trim(chop($cont));
$a=strpos($cont,"",0);
$b=strpos($cont,"",$a);
$title=substr($cont,$a+7,$b);
Подскажите пожалуйста, что не так!
-
Million
Ошибка у тебя в использовании substr. Третий параметр в ней должен указывать длину вырезаемой строки. То есть тебе нужно:
$a = strpos($cont, "");
$b = strpos($cont, "");
$length = $b - $a - 7;
$title = substr($cont, $a + 7, $length);
А вообще, использовал бы regexp и не мучился.
-
GotZfild
Спасибо. Если будет возможность напиши пожалуйста как это сделать исползуя regexp.
-
$cont = trim(chop($cont));
preg_match("!([^<]+)!iUs", $cont, $matches);
$title = $matches[1];
Теперь этот поиск стал регистронезависимым.
-
GotZfild
Очень интересный оператор.
Вот только со строкой
"!([^<]+)!iUs"
возникла сложность в понимании.
Что значат все эти символы?(кроме ):)
-
Это, собственно, и есть регулярное выражение. Почитай
http://myphp.dem.ru/doc/index.php?regexp-intro
-
Спасибо разобрался:)
Можно даже так записать
preg_match("!([^<]+)Вот только там ничего про "!" не написано.
Я так понял, что это тоже самое что и "/".
-
Можно даже так записать
preg_match("!([^<]+)
Можно и так, но для пущей надежности все же...
А насчет ! - это просто разделитель, вместо него можно использовать все, что угодно.
-
GotZfild, а как лучше курсы валют с сайта НБУ взять?
-
Что такое НБУ?
А насчет вытягивания информации с других сайтов, посмотри http://myphp.dem.ru/lessons/index.php?12
-
Million
Я бы взял с RBC
ЗЫ:
preg_match("!([^<]+)это можно переписать на
ereg("!(.*)<", $cont, $mathces);
ИМХО посисковые регулярки работают быстрее
-
preg_match("!([^<]+)это можно переписать на
ereg("!(.*)<", $cont, $mathces);
ИМХО посисковые регулярки работают быстрее
error_reporting(E_ALL);
include("Timer.php");
$file=implode("",file("a.html"));
// тестим preg
$_preg = new Benchmark_Timer;
$_preg->start();
preg_match("!([^<]+)<\\/title>!i", $file, $matches);
print_r($matches);
$_preg->stop();
echo $_preg->timeElapsed()."\\n";
// тестим ereg
$_ereg = new Benchmark_Timer;
$_ereg->start();
eregi("(.*)?<\\/title>", $file, $mathces);
print_r($mathces);
$_ereg->stop();
echo $_ereg->timeElapsed();
?>
результат:
Array
(
- => sadkfj
[1] => sadkfj
)
0.005480
Array
(
- => sadkfj
[1] => sadkfj
)
0.054973
-
Так, начался извечный спор. Ссылочка по теме:
http://phpclub.net/talk/showthread.php?threadid=19789&rand=21
-
GotZfild
НБУ(Национальный Банк Украины) то же самое, что и ЦБ РФ только в Украине.
AlieN
Что такое RBC ?
Макс
Как можно узнать сколько все мои скрипты выполняются?
-
Что такое RBC ?
РосБизнесконсалтинг
http://www.rbc.ru
-
Million
Как можно узнать сколько все мои скрипты выполняются?
На форуме уже этот вопрос поднимался. Поищи.
Я использую Benchmark/Timer.php - ищи в PEAR.
еще есть ab.exe (apache benchmark)