PHP: удалить все гиперссылки определенного домена из текста - PullRequest
0 голосов
/ 25 марта 2012

2 вещи:

  1. Удалите все гиперссылки, которые указывают на mydomain.com, и сохраните все другие гиперссылки, не принадлежащие этому домену.

  2. Для всех оставшихся URL-адресов возьмите значение между тегами и покажите его как идентификатор.

1. О первом задании:

У меня есть это:

$str = 'I have been searching <a href="http://www.google.com">Google</a> for all the valuable information. I have also tried <a href="http://www.yahoo.com">Yahoo</a> and I finally, ended up finding it at
<font size="1">My Site <a style="color:#0000ff;font-family:Arial,Helvetica,sans-serif" href="http://www.mydomain.com/go.php?offer=fine&amp;pid=10" target="_blank" >My Link</a></font>. So you can visit <a href="http://www.mydomain.com/go.php?offer=ok" target="_blank">My Link</a>'; 

Я хочу это:

$str = 'I have been searching <a href="http://www.google.com">Google</a> for all the valuable information. I have also tried <a href="http://www.yahoo.com">Yahoo</a> and I finally, ended up finding it at . So you can visit '; 

Что я пробовал:

Я попробовал следующий preg_replace, но он удаляет все ссылки. Я просто хочу, чтобы он удалил все ссылки с mydomain.com и сохранил все остальное как есть.

$pattern = "/<a[^>]*>(.*)<\/a>/iU";
$final_str = preg_replace($pattern, "$1", $str);

2. О втором задании:

Наконец, я хочу закончить с этим:

$str = 'I have been searching <a href="http://www.google.com" id="Google">Google</a> for all the valuable information. I have also tried <a href="http://www.yahoo.com" id="Yahoo">Yahoo</a> and I finally, ended up finding it at . So you can visit '; 

1 Ответ

1 голос
/ 07 декабря 2012

Это нужно сделать в 2 шага:

<?

$str = 'I have been searching <a href="http://www.google.com">Google</a> for all the valuable information. I have also tried <a href="http://www.yahoo.com">Yahoo</a> and I finally, ended up finding it at <font size="1">My Site <a style="color:#0000ff;font-family:Arial,Helvetica,sans-serif" href="http://www.mydomain.com/go.php?offer=fine&amp;pid=10" target="_blank" >My Link</a></font>. So you can visit <a href="http://www.mydomain.com/go.php?offer=ok" target="_blank">My Link</a>';

// removing the domain links
$pattern1 = '|<a [^>]*href="http://www.mydomain.com[^"]*"[^>]*>.*</a>|iU';
$str = preg_replace($pattern1, '', $str);

// adding IDs
$pattern2 = '|(<a [^>]+)>(.*)</a>|iU';
$str = preg_replace($pattern2, '$1 id="$2">$2</a>', $str);

Дайте мне знать, если вам также нужно избавиться от <font size="1">My Site </font> части.

...