Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Поиск и замена ссылок


Автор: Satell 4.7.2007, 19:09
$pagetext=текст html документа;
@links=массив ссылок;
@images=массив ссылок на картинки;

нужно заменить все теги <a href=какой-то адрес>  в документе $pagetext на теги с ссылками из массива @links в случайном порядке
и все теги <img src=какая-то картинка> на картинки из массива @images в случайном порядке, как это сделать?

вот например код который меняет, но во всём документе сразу и только на одну ссылку, а надо чтобы было много разных, можно ли сделать что-то типа find next, чтобы при каждом запуске оператора s/ / он находил следующую ссылку

Код

$randout=$links[rand @links]; 
$randimg=$images[rand @images];
$pagetext =~ s/href=\".*\"/href=\"$randout\"/gi;    
$pagetext =~ s/<img.*src=.*>/<img src=\"$randimg\">/gi;

Автор: nitr 4.7.2007, 23:15
smile
Вам не в форум perl - а в работу/"Цетнтр помощи" или типа того... 

Автор: amg 5.7.2007, 07:10
Немного замысловато, но должно работать
Код

$pagetext =~ s/href=".*?"/'href="'.$links[rand @links].'"'/egi;    
$pagetext =~ s/<img.*?src=.*?>/'<img src="'.$images[rand @images].'"'>/egi;


Satell, обрати внимание на поисковую часть регулярных выражений. Я немного подправил, но до идеала далеко, правильно парсить html не так просто, лучше пользоваться готовыми решениями.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)