Php 忽略<;输入>;删除协议时使用HTTP/S标记

Php 忽略<;输入>;删除协议时使用HTTP/S标记,php,regex,Php,Regex,我在WordPress中运行了一个PHP脚本,该脚本从所有链接中删除了http:和https:协议,但下面是剥离协议的部分: # If 'Relative' option is selected, remove domain from all internal links if ( $this->option == 2 ) { $website = preg_replace( '|https?:\/\/|', '', home_url() ); $links = preg_

我在WordPress中运行了一个PHP脚本,该脚本从所有链接中删除了
http:
https:
协议,但下面是剥离协议的部分:

# If 'Relative' option is selected, remove domain from all internal links
if ( $this->option == 2 ) {
    $website = preg_replace( '|https?:\/\/|', '', home_url() );
    $links = preg_replace( '|https?:\/\/' . $website . '|', '', $links );
}
# For all external links, remove protocols
$links = preg_replace( '|https?:\/\/|', '', $links );
这正是我们想要的。但是,它也会删除文本字段中的协议,如下所示:

我试图更新我的正则表达式以忽略任何
字段,这样它就不会删除协议。尤其是带有
value=http:
value=https:
的:


我想出了这个模式:

<input(.*)value=["\']https?:\/\/
选项==2){
$website=preg\u replace(“| https?:\/\/\/”,“,home\u url());
$links=preg\u replace(“| https?:\/\/”.$website.“|”、“$links”);
}
#对于所有外部链接,请删除协议
$links=preg\u replace(“| https?:\/\/\/”、“//”、$links);
多亏了,这是有效的正则表达式:

/<input\b[^<]*\bvalue=[\"\']https?:\/\/(*SKIP)(*F)|https?:\/\//
/多亏了,这是有效的正则表达式:

/<input\b[^<]*\bvalue=[\"\']https?:\/\/(*SKIP)(*F)|https?:\/\//

/请为包含该内容的行编写html或php代码,以便更好地理解。“可能吗?”贾斯梅补充道。你可以在我所包含的内容中看到它。一如既往地使用<代码> HTML>代码>,考虑使用解析器(例如<代码> DoMoads)。所以我就换了<代码> $Link=PREGGREST('~请写HTML或PHP代码,以使其具有更好的性能。这是可能的吗?)JuSMME补充说。您可以在我所包括的内容中看到它。@Jan我确实求助于DOMDocument,但它最终导致WordPress的管理面板出现问题。因此我切换了Easy。
$links=preg\u replace('~
/<input\b[^<]*\bvalue=[\"\']https?:\/\/(*SKIP)(*F)|https?:\/\//