下一个链接示例返回2个链接,两个链接都以 \“结尾。示例文本中没有以\”结尾的链接。但是当我在WordPress网站中运行preg_match_all()函数时,我得到了这个。
我需要解决这个问题,只获得不的链接以\“
结尾这里是我从中检索链接的文本示例:
$banner_link = '<a href="https://mobico.nl/telefoon/?tt=26156_1144596_250041_&r=" target="_blank" rel="nofollow"><img src="http://ti.tradetracker.net/?c=26156&m=1144596&a=250041&r=&t=html" width="300" height="250" border="0" alt="" /></a>';
preg_match_all('!https?://\S+!', $banner_link, $matches);
$all_urls = $matches[0];
print_r($all_urls[0]);
echo '<br>';
print_r($all_urls[1]);
这里的结果都以\“
结尾https://mobico.nl/telefoon/?tt=26156_1144596_250041_&r= \“
http://ti.tradetracker.net/?c=26156&m=1144596&a=250041&r=&t=html \“
我可以使用str_replace()来实现,但可能使用preg_match_all()函数。
答案 0 :(得分:0)
首先,输入字符串中\"
之后没有r=
,preg_match_all()
无法返回以\"
结尾的网址。
由preg_match_all()
标识的网址以"
结尾,因为regex
过于宽松。
试试这个:
$banner_link = '<a href="https://mobico.nl/telefoon/?tt=26156_1144596_250041_&r=" target="_blank" rel="nofollow"><img src="http://ti.tradetracker.net/?c=26156&m=1144596&a=250041&r=&t=html" width="300" height="250" border="0" alt="" /></a>';
preg_match_all('!https?://[^"]*!', $banner_link, $matches);
print_r($matches);
输出结果为:
Array
(
[0] => Array
(
[0] => https://mobico.nl/telefoon/?tt=26156_1144596_250041_&r=
[1] => http://ti.tradetracker.net/?c=26156&m=1144596&a=250041&r=&t=html
)
)