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

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

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

 

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

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

тема: Найти и дополнить строку
 
 автор: red_komrad   (30.09.2010 в 22:15)   письмо автору
 
 

Добрый день! Не могу решить одну задачу, помогите пожалуйста. Суть задачи такова:
Имеется текст. Требуется отыскать в нем все ссылки на mp3 файлы и дополнить их(допустим, поместить в конструкцию вида [this is mp3: найденная ссылка])

Как заменить ссылку, я догадался:)
function my_dummy_function($content) {

$pattern = "<a ([^=]+=['\"][^\"']+['\"] )*href=['\"](([^\"']+\.mp3))['\"]( [^=]+=['\"][^\"']+['\"])*>([^<]+)<\/a>";

$content = ereg_replace($pattern, "Link", $content);
return $content;
}

а вот как получить её и дополнить(в тексте может быть несколько ссылок)?

  Ответить  
 
 автор: heed   (01.10.2010 в 03:42)   письмо автору
 
   для: red_komrad   (30.09.2010 в 22:15)
 

preg_replace
<?php 
header
('content-type: text/plain'); 

$content='<a href=".mp3">sound</a>
<a href=".mp19">soul</a>
'
;

$pattern '#<a\s+[^>]*?href=[\'"][^\'"]++(?<=\.mp3)[^>]++>#i'
echo 
$content preg_replace($pattern'$0[this is mp3]: '$content);

  Ответить  
 
 автор: red_komrad   (01.10.2010 в 23:46)   письмо автору
 
   для: heed   (01.10.2010 в 03:42)
 

Спасибо за совет, все работает!

  Ответить  
 
 автор: red_komrad   (01.10.2010 в 23:54)   письмо автору
 
   для: heed   (01.10.2010 в 03:42)
 

Но можно ли кое-что уточнить?

можно ли как-то закрыть ] после ссылки?
как взять в [ ] именно ссылку, а не вывести [this is mp3] между тегами <a>

  Ответить  
 
 автор: heed   (03.10.2010 в 21:07)   письмо автору
 
   для: red_komrad   (01.10.2010 в 23:54)
 

preg_replace('#abc#', '$0[..]', ...)       => ...abc[..].....
preg_replace('#(a)(b)#', '$1[..$2]', ...)  => ...a[..b]c........
preg_replace('#(a)(bc)#', '[$1..$2]', ...) => ...[a..bc].....
...

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

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