Php 如何添加&;URL正则表达式解析器的分隔符

Php 如何添加&;URL正则表达式解析器的分隔符,php,regex,wordpress,url,escaping,Php,Regex,Wordpress,Url,Escaping,下面的函数接受一个字符串并返回其中包含的所有URL。但是,当查询变量正确分离并用&;转义时;它在&处截断。如何修改正则表达式以在&;时返回整个URL;使用了什么 例如: https://www.youtube.com/watch?v=exvUH2qKLTU&start=25 变成 https://www.youtube.com/watch?v=exvUH2qKLTU& 参考: 是的,这是一个WordPress函数,但您不需要了解任何有关WordPress的

下面的函数接受一个字符串并返回其中包含的所有URL。但是,当查询变量正确分离并用&;转义时;它在&处截断。如何修改正则表达式以在&;时返回整个URL;使用了什么

例如:

https://www.youtube.com/watch?v=exvUH2qKLTU&start=25
变成

https://www.youtube.com/watch?v=exvUH2qKLTU&
参考:
是的,这是一个WordPress函数,但您不需要了解任何有关WordPress的信息即可获得帮助:

Concats,而不仅仅是使用/x标志。是的,看起来像Wordpress。但是你为什么不事先应用html实体解码呢?好吧,这不是我的功能,它是WordPress核心,也许是为了性能?
function wp_extract_urls( $content ) {
    preg_match_all(
        "#([\"']?)("
            . "(?:([\w-]+:)?//?)"
            . "[^\s()<>]+"
            . "[.]"
            . "(?:"
                . "\([\w\d]+\)|"
                . "(?:"
                    . "[^`!()\[\]{};:'\".,<>«»“”‘’\s]|"
                    . "(?:[:]\d+)?/?"
                . ")+"
            . ")"
        . ")\\1#",
        $content,
        $post_links
    );

    $post_links = array_unique( array_map( 'html_entity_decode', $post_links[2] ) );

    return array_values( $post_links );
}