|
|
|
| Задача не сложная, но я недавно начал изучать регулярные выражения, а ответ нужен как можно скорее
Есть выражение для поиска ссылок в файле:
/\<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'
не проверял | |
|
|
|
|
|
|
|
для: .....
(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 как-то многовато но "с минимальными изменениями в коде" | |
|
|
|
|
|
|
|
для: .....
(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' | |
|
|
|
|
|
|
|
для: .....
(18.10.2010 в 11:25)
| | '#<a\b[^>]+?\bhref=["\']?([^\s>\'"]++)(?<=\.mp3)[^>]*>(.*?)</a>#is' - заработало!
Спасибо за квалифицированную помощь | |
|
|
|