我有一个问题,这似乎很简单,但是谁给我带来了一些问题。
我有一个文本字符串,可以包含多个html标签,段落和链接(文本链接和/或HTML链接)。我想解析内容,检测具有特定URL的链接,并且仅在这种情况下,在网址中应用跟踪参数。
示例:我想仅在以google.com开头的网址上添加参数。
$string = 'This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com">This one will be surcharged with ?tk=test</a> and direct links too : google.com";
我该怎么做?我尝试使用正则表达式,但它不起作用。我试过preg_replace,但是URL可以有多种形式(http或不是,不同的tld等)。
谢谢!!!
答案 0 :(得分:2)
我会将preg_replace
与/href="([^"?]*google\.com[^"]*)"/
一起用作模式。 ("
在下面的php中转义)
$string = 'This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com">This one will be surcharged with ?tk=test</a>';
$output = preg_replace("/href=\"([^\"?]*google\.com[^\"]*)\"/", "href=\"$1?tk=test\"", $string);
echo $output;
返回:
This is the content... <a href="yahoo.com">Yahoo</a> - <a href="google.com?tk=test">This one will be surcharged with ?tk=test</a>
这会将?tk=test
附加到包含"google.com"
的任何href的末尾
https://regex101.com/r/7eoohe/3
**更新了正则表达式,使其与https://search.yahoo.com/?p=google.com