我正在尝试替换href,我有以下代码:<a href="http://www.mysite.com" target="_blank">My site</a>
与此:
$textarea_content = '<a href="http://www.mysite.com" target="_blank">My site</a>';
$patterns = array(
"/<a href=/",
"/target*\=*\'*\_blank*\'*\>/",
"/<*\/a>/"
);
$replacements = array(
"[url=",
"]",
"[/url]"
);
$textarea_content = preg_replace($patterns,$replacements, $textarea_content);
我需要将链接标记转换为此结构:
[url='http://www.mysite.com']My site[/url]
问题是输出类似于:<a href="" http:="" www.mysite.com''="" target="_blank">My site</a>
我做错了什么?谢谢你的帮助!
答案 0 :(得分:1)
echo preg_replace('/(?:\<a\s+.*href=\"([^\"]*)"[^\>]*\>([^\<]*)\<\/a\>)/', '[url=\'\\1\']\\2[/url]', $text);
假设:
$text = 'Bla bla bla <a href="http://www.mysite.com" target="_blank">My site</a> bla bla bla';
结果:
Bla bla bla [url='http://www.mysite.com']My site[/url] bla bla bla
编辑根据OP的评论如下:
如果想要取回HTML,您只需要这样做:
echo preg_replace('/(?:\[url=\'([^\']*)\'\]([^\[]*)\[\/url\])/', '<a href="\\1" target="_blank">\\2</a>', $parsed);
假设:
$parsed = 'Bla bla bla [url=\'http://www.mysite.com\']My site[/url] bla bla bla';
结果:
Bla bla bla <a href="http://www.mysite.com" target="_blank">My site</a> bla bla bla