Тупой вопрос по регулярным выражениям.

[Удален]
632

Тут конечно не форум по программированию, но наверняка кто-то занимался...

Задача такая - нужно взять из html-документа все ссылки (короче то, что стоит <a ... href=вот здесь ...> , и нужно для этого счастья наваять регулярку. Если кто поможет - премного благодарен.

VT
На сайте с 27.01.2001
Offline
130
#1

$text = "something <a href=http://something.com>Something text</a>";

while ($text=~s/<a.+?href\=(.+?)>(.+?)<\/a>//i)

{

my ($url, $description) = ($1, $2);

print "$url => $description\n";

}

[Удален]
#2

Спасибо. Плохо, что я не совсем верно выразил задачу - мне нужно эти ссылки в тексте заменить на другие. Можно ли это сделать с помощью preg_replace, и если да, то хотя бы приблизительно как ?

VT
На сайте с 27.01.2001
Offline
130
#3
Плохо, что я не совсем верно выразил задачу - мне нужно эти ссылки в тексте заменить на другие

Не совсем понятно, что на что нужно поменять и по какому алгоритму.

[Удален]
#4

Допустим, есть ссылка

<a href=xxx.html>

Нужно, чтобы было

<a href=yyy.html>

yyy=f(xxx), то есть вставляемая ссылка считается по некоторой функции от исходной.

dema501
На сайте с 03.03.2003
Offline
64
#5

Можно так


<?php
$text = "something <a href=http://something.com>Something text</a>";
$replacement = 'ssssssssssssssssssssssssssssss';
echo preg_replace ("/(<a[^>]*href=[^'\"]?)([^'\" >]*)([^'\"]?[^>]*>)((?:(?!<\/a>).)*)(<\/a>)/", "\$1$replacement\$3\$4\$5", $text);
?>
[Удален]
#6

Ну совсем не работает :) Но в общем понятно.

dema501
На сайте с 03.03.2003
Offline
64
#7

при копировании кое-что потерялось ;)

[Удален]
#8

И еще не все нашлось, к слову будет сказано ;)

VT
На сайте с 27.01.2001
Offline
130
#9
при копировании кое-что потерялось

Ну и намутил...

echo preg_replace ("/(<a.+?href.*?\=).+?(>.+?<\/a>)/", "\$1$replacement\$2", $text);

dema501
На сайте с 03.03.2003
Offline
64
#10

Но ваш вариант не работает вот с такими

<a href=http://something.com alt=">= cool =<">Something

text</a>

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий