从href中提取链接并将其放在括号中


Extracting link from a href and putting it within brackets

我已经搜索过了,但找不到我要找的东西。

正常情况下是这样的:

<p>
    Hi how are you? Have you checked <a href="http://www.google.com">Google</a> or <a href="http://www.youtube.com">YouTube</a>?
</p>

但我很想拥有的,因为我愿意将其应用于打印或PDF页面,如下所示:

<p>
     Hi how are you? Have you checked <a href="http://www.google.com">Google</a> (<a href="http://www.google.com">http://www.google.com</a>)
     or <a href="http://www.youtube.com">YouTube</a> (<a href="http://www.youtube.com">http://www.youtube.com</a>)?
</p>

现在,我知道regex应该有一些工作,但我不知道如何使用它。文本将取自包含文章的变量$content,我希望$content中的所有链接保持原样,再加上href的内容作为括号"()"内的附加超链接,这样,假设当有人阅读超链接所在的打印文章时,他们就能看到实际的URL。

使用伪元素在链接后添加href,类似于:

a[href]:after  
{
    content: " (" attr(href) ") ";
}

这里有一个方便的小函数就足够了。

    <?php
        /**@var string $strInput  THE STRING TO BE FILTERED */
        function doubleUpOnURL($strInput){
            $arrAnchorSplit     = preg_split("#<'/a>#", $strInput);
            $strOutput          = "";
            $anchorRegX         = '(<a's*href=['''"])(.+)(['''"]>)(.*)';
            foreach($arrAnchorSplit as $anchoredString){
                $strOutput     .= preg_replace("#" . $anchorRegX . "#si" , "$1$2$3$4</a> ($1$2$3$2</a>)", $anchoredString);
            }
            return $strOutput;
        }
        $strInput = '<p>Hi how are you? Have you checked <a href="http://www.google.com">Google</a> or <a href="http://www.youtube.com">YouTube</a>?</p>';
        echo(doubleUpOnURL($strInput));
        //OUTPUTS:
        // Hi how are you? Have you checked Google (http://www.google.com) or YouTube (http://www.youtube.com)?

我希望你觉得它有帮助。。。