需要关于php中正则表达式替换的帮助吗

需要关于php中正则表达式替换的帮助吗,php,regex,preg-replace,Php,Regex,Preg Replace,我有一个字符串,其中包含此模式的链接: <a href="http://randomurl.com/random_string;url=http://anotherrandomurl.com/">xxxx</a> 我想删除“http://xxx.xxx.xxx/random_string;url=“并保留字符串的其余部分,保留在末尾 <a href="http://anotherrandomurl.com/">xxxx</a> 有人能帮

我有一个字符串,其中包含此模式的链接:

<a href="http://randomurl.com/random_string;url=http://anotherrandomurl.com/">xxxx</a>

我想删除“http://xxx.xxx.xxx/random_string;url=“并保留字符串的其余部分,保留在末尾

<a href="http://anotherrandomurl.com/">xxxx</a>

有人能帮忙吗?

使用:

$new_link = preg_replace('/<a href="(?:.+);url=([^"]+)">/', '<a href="$1">', $url);

$new\u link=preg\u replace('/有多种方法可以实现您想要的结果。
regex
的另一种方法是使用并删除这些字符和前面的字符来查找
url=
的出现。

$new\u link=preg\u replace('~(\shref=)[^]+?)这比你想象的要复杂,我敦促你这样做。
$new_link = preg_replace('~(\shref=")[^"]+?(?<=;url=)~', '$1', $url);
相反,您应该使用HTML解析器查找文档中的所有
标记,然后在
;url=
上拆分它们的
href
属性,并仅保留最后一部分

但是,如果必须使用正则表达式,则以下内容适用于大多数格式良好的HTML:

preg_replace('/(<\s*a\s[^>]*href=)(["\'])(?:[^\1]*;url=)([^\1]*)(\1[^>]*>)/i', "$1$2$3$4", $url)
preg\u replace('/(]*href=)([“\'])(?:[^\1]*;url=)([^\1]*)(\1[^>]*>)/i',“$1$2$3$4”,$url)
说明:


(]*\bhref=)#您可以发布您尝试过的内容吗?您没有发布任何代码或之前的尝试,我们不可能针对正则表达式的每个需求考虑一个问题。如果您可以编辑您的问题以显示您尝试过的正则表达式,它将获得实际有助于人们理解正则表达式的答案。请将您的问题标记给主持人atten如果您这样做,
?:
使其成为非捕获子模式如果标记具有任何其他属性或不同数量的空白,或者如果URL引用了
,而不是
+1,则此解决方案将失败,该解决方案将比正则表达式更健壮、更简单