【发布时间】:2018-10-16 14:43:47
【问题描述】:
好的,所以我有一个字符串(它是电子邮件的内容),我需要将一个变量附加到该字符串上存在的任何 URL。 我们可以认为所有 URL 都在锚标签的 href 属性内 因此,我想搜索任何出现的 href="whatever" 并将其替换为 href="whatever?myvar"。 理想情况下,我还想检查链接中是否已经包含任何 var,以便将其附加为“&myvar”而不是“?myvar”。
我有类似的东西,但我迷失了正则表达式..
$pattern = '"\b(http?://\S+)"';
$html_links = preg_replace($pattern, '$1&myvar', $text);
这不起作用,因为它在 href 属性的右双引号之后附加了我的 var...
抱歉,我对正则表达式很不满意。任何帮助将不胜感激!
【问题讨论】:
-
也许不需要使用正则表达式进行 url 替换,请参阅php.net/manual/en/function.parse-url.php。还有php.net/manual/en/function.parse-str.php 用于查询字符串解析。 php.net/manual/en/function.http-build-query.php 用于将解析后的查询数组转换回字符串。
-
将
preg_match_all与this page 中的正则表达式之一一起使用。获得网址后,您可以更改它们并使用str_replace在字符串中替换它们。 -
抱歉,这对我不起作用。再次,我对正则表达式非常非常糟糕。肯定需要使用正则表达式。但我看不出你的意思,@Michel 最终结果会是什么样子?
标签: php regex preg-replace