Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как получить все URL с #usd
 
 автор: Mynameis   (06.09.2008 в 10:00)   письмо автору
 
 

Здравствуйте, помогите получить все URL у которых в конце #usd, пример:
http://site.ru/2008/09/02/#usd
вид URL может быть абсолютно разным, т.е. уникальными признаками здесь является в начале http:// и в конце #usd

  Ответить  
 
 автор: xx77   (06.09.2008 в 22:02)   письмо автору
 
   для: Mynameis   (06.09.2008 в 10:00)
 

способов много , но работа выражения
сильно зависит от того откуда нужно получать все такие URL
,) всмысле может они в тегах <a> , а может просто идут каждый отдельной строкой

вот например в тексте ,где много букв h ,)
<pre><?
list($m$time) = sscanf(microtime(), '0%s %s');
$time .= $m# время начала выполнения

$txt str_repeat('http://site.ru/2008/09/01/#usd
hhhhhhh hhhhhhhhh hhhh hhhhhhh
http://site.ru/2008/09/02/#usd
hh hhhhh hhhhhhhh hhhhhhh hhhh hhhh
http://site.ru/2008/09/03/#usd
hh hhhhhhhh hhh hhhhh hhhhhh hhhh
http://site.ru/2008/09/04/#usd
hhhhh hhhh hhhhhhhhh hhh hhhhh hhhh
http://site.ru/2008/09/05/#usd
hhhh hhhhhh hhhh hhhhh hhhh hhhh
http://site.ru/2008/09/06/#usd
hhhhh hhhhhhhhhhhhh hhhhhh hhhh
http://site.ru/2008/09/07/
hhhhh hhhhhhhhh hhhhhh hhhhhhh hhh
http://site2.ru/?url=http://site.ru/2008/09/09/#usd
'
15);

$re1 '~http://[^#\s"\'>]+#usd\b~';
// такое выражение, которое ищет сначала букву h 
$re2 '~\bhttp://[^#\s"\'>]+#usd\b~';
// или такое, начинающее искать совпадения с границы слова

# они будут работать заметно медленнее , чем такое по сути медленное выражение :

$re3 '~(?<=\bhttp)://[^#\s"\'>]+#usd\b~';
/* которое делает шаг назад, проверяя было-ли http
, но ищет начиная с двоеточия :
, которыx не так много в тексте
*/

# вот можете попробовать, меняя  $re1 , $re2 , $re3 :)
preg_match_all($re3$txt$out);
print_r($out);

list(
$m$t) = sscanf(microtime(), '0%s %s');
printf("<hr/>%.f7\n",  (($t .= $m) - $time)); # время выполнения
?></pre>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования