我的代码有时分为两行,如下所示:
我正在尝试使用以下正则表达式匹配部分网址:
https://www.url.com/(.*?)">Please Click Here
我尝试在该行使用/s
和/m
,但似乎不匹配。
有什么建议吗?
答案 0 :(得分:1)
问题在于“请点击这里”与此不匹配:
Please Click
Here
后者包含空格字符,如\n
,\r
(可能),可能还有\t
。虽然它看起来不像您发布的图像中包含\t
,但最好也尝试处理该场景。 \s
表达式将捕获一个简单的空格()以及每个字符。
请改用此正则表达式:
https://www\.url\.com/(?:[^"]*)(?=">Please\s+Click\s+Here)
修改:进一步调整以仅返回网址,而不是“请点击此处”和">
。
答案 1 :(得分:1)
对于静态网址,基本搜索模式为:
/https:\/\/www\.url\.com\/([^\"]*)\"[^>]*>\s*Please\s+Click\s+Here/
但是你最好使用$url
作为变量并将其包含在正则表达式模式中,如下所示:
/<a\b[^>]*\burl=\"$url\"[^>]*>\s*Please\s+Click\s+Here\s*<\/a>/i
答案 2 :(得分:1)
您无需在此处使用s
(单行)或m
(多行)修饰符。
您可以使用以下简单的内容。
preg_match('~([^/]+)(?=">please\s+click\s+here)~i', $text, $match);
echo $match[1];
i
修饰符用于不区分大小写的匹配。
请参阅live demo