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

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

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

 

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

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

тема: Дополнить регулярку
 
 автор: red_komrad   (18.10.2010 в 00:32)   письмо автору
 
 

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

/\<a(.*?)href=([\"']?)(.*?)\\2(.*?)\>(.*?)\<\/a\>/is

надо доделать его так, чтобы оно находило ссылки на .mp3 файлы, при этом с минимальными изменениями в коде выражения

заранее спасибо!

  Ответить  
 
 автор: .....   (18.10.2010 в 01:56)
 
   для: red_komrad   (18.10.2010 в 00:32)
 

это выражение с href= без кавычек хоть правильно работает ?

'/\<a\b([^>]+?)href=(["\']?)([^\s>\'"]++)(?<=\.mp3)\\2([^>]++)>(.*?)<\/a>/is'
не проверял

  Ответить  
 
 автор: red_komrad   (18.10.2010 в 02:03)   письмо автору
 
   для: .....   (18.10.2010 в 01:56)
 

Что-то вообще ничего не происходит(

  Ответить  
 
 автор: .....   (18.10.2010 в 10:33)
 
   для: red_komrad   (18.10.2010 в 02:03)
 

возможно \\2([^>]++) надо заменить на \\2([^>]*+)

можно многое заменить; $0, $1, $2, $3, $4, $5 как-то многовато но "с минимальными изменениями в коде"

  Ответить  
 
 автор: red_komrad   (18.10.2010 в 10:47)   письмо автору
 
   для: .....   (18.10.2010 в 10:33)
 

тоже ничего
думаю, что придется отказаться от фразы про минимальные изменения

  Ответить  
 
 автор: .....   (18.10.2010 в 11:25)
 
   для: red_komrad   (18.10.2010 в 10:47)
 

в чём разница?
<?php
header
('content-type: text/plain'); 


$txt='<a href="xxxxx.mp3">xxxx</a>
<a zzz=zzz href="yyyyy.mp3">yyyyy</a>
<a href="4444444.mp4">44444</a>
<a zzz=zzz href=zzzzzzzzz.mp3>zzzzzz</a>
<a zzz=zzz href="aaaaaaa.mp3" zzz=zzz>aaaaaaa/a>
'
;


$pattern '/<a\b([^>]+?)href=(["\']?)([^\s>\'"]++)(?<=\.mp3)\\2([^>]*+)>(.*?)<\/a>/is'
preg_match_all($pattern$txt$x);
var_dump($x);
?>

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

<?php
$pattern 
"/\<a(.*?)href=([\"']?)(.*?)\\2(.*?)\>(.*?)\<\/a\>/is"
preg_match_all($pattern$txt$x);
var_dump($x);


а так непонятно для чего столько подстрок в ()
почему не такое например ?
'#<a\b[^>]+?\bhref=["\']?([^\s>\'"]++)(?<=\.mp3)[^>]*>(.*?)</a>#is'

  Ответить  
 
 автор: red_komrad   (18.10.2010 в 14:53)   письмо автору
 
   для: .....   (18.10.2010 в 11:25)
 

'#<a\b[^>]+?\bhref=["\']?([^\s>\'"]++)(?<=\.mp3)[^>]*>(.*?)</a>#is' - заработало!
Спасибо за квалифицированную помощь

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

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