Подскажите регулярку по замене ссылок

D
На сайте с 20.09.2010
Offline
158
296

Хочу почистить базу сайта, столкнулся с такой задачей. Есть текст:

Текст бла бла <a href="http://link_to_my_site.com">Ankor</a> text text text <a href="http://link_to_out_site.com">Ankor</a> text text

Как в этом тексте вырезать все ссылки которые ведут на мой сайт(http://link_to_my_site.com внутренние ссылки) заменив их анкором ссылки, а внешние ссылки(http://link_to_out_site.com) оставить как есть?

J
На сайте с 20.02.2014
Offline
97
jkm
#1

https://regex101.com/r/mPuuA4/1

<a [^>]*href="https?://(?:www\.|)mysite\.com[^>]*>(.*?)</a>
D
На сайте с 20.09.2010
Offline
158
#2

Что-то туплю дико, подскажите а как в preg_replace засунуть эту регулярку? Пробую так:

$text = preg_replace('|<a [^>]*href="https?://(?:www\.|)mysite\.com[^>]*>(.*?)</a>|isU', '$1', $text);

но выдает ошибку

Warning: preg_replace(): Unknown modifier ')' in /home/test.php

J
На сайте с 20.02.2014
Offline
97
jkm
#3

'~<a [^>]*href="https?://(?:www\.|)mysite\.com[^>]*>(.*?)</a>~is'
[Удален]
#4
datum:
Хочу почистить базу сайта, столкнулся с такой задачей. Есть текст:



Как в этом тексте вырезать все ссылки которые ведут на мой сайт(http://link_to_my_site.com внутренние ссылки) заменив их анкором ссылки, а внешние ссылки(http://link_to_out_site.com) оставить как есть?

В самом простом случае - так:

<?php


$re = '/<a href="http:\/\/link_to_my_site\.com">(.+?)<\/a>/';
$str = 'Текст бла бла <a href="http://link_to_my_site.com">Ankor</a> text text text <a href="http://link_to_out_site.com">Ankor</a> text text';


echo preg_replace($re, "$1", $str);

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