【问题标题】:Replace a href tag by a shortcode structure with preg_replace用 preg_replace 的简码结构替换 href 标记
【发布时间】:2012-10-29 19:45:34
【问题描述】:

我正在尝试替换一个 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]

问题是输出类似于:&lt;a href="" http:="" www.mysite.com''="" target="_blank"&gt;My site&lt;/a&gt;

我做错了什么?感谢您的帮助!

【问题讨论】:

    标签: php regex href bbcode


    【解决方案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
    

    【讨论】:

    • 非常感谢!它就像一个魅力,但只是另一个小问题:如果我现在想返回 [url='...' target=_"blank"]...[/url] 到 我的网站
    • 你就是男人!非常感谢你,它对我帮助很大! ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多