У меня много таких текстов:
<a href="https://mega.co.nz/#![RandomThings1]" target="_blank">[RandomThings2] [<span style="color:#008000;">[RandomThings3]</span>]</a>
Я хочу превратить их в это:
<a href="https://mega.co.nz/#![RandomThings1]" target="_blank">[RandomThings2] [<span style="color:#008000;">[RandomThings3]</span>]</a> <a href="http://no.refer.co/?link=https://mega.co.nz/%23![RandomThings1]" target="_blank">NoRefer</a>
Как я могу это сделать?
Так как Regex flavour в плагине Search Regex WordPress PHP, вы можете попробовать следующее регулярное выражение, которое предполагает, что у вас действительно есть произвольный текст в квадратных скобках ([RandomThings1]
):
(<a\s+[^>]*?href="[^"]*#!(\[.*?\])"[^>]*?>[^<>]*?<span[^>]*?>[^<>]*?<\/span>[^<>]*?<\/a>)
Заменить $1 <a href="http://no.refer.co/?link=https://mega.co.nz/%23!$2" target="_blank">NoRefer</a>
,
Вот демонстрация.
Код PHP:
$re = "/(<a\\s+[^>]*?href=\"[^\"]*#!(\\[.*?\\])\"[^>]*?>[^<>]*?<span[^>]*?>[^<>]*?<\\/span>[^<>]*?<\\/a>)/";
$subst = "$1 <a href=\"http://no.refer.co/?link=https://mega.co.nz/%23!$2\" target=\"_blank\">NoRefer</a>";
$result = preg_replace($re, $subst, $str);
Других решений пока нет …