我目前正在编写一个脚本。包含以下代码:
第一个月
这只适用于链接fref=fr-tab
+ &
或?
的一部分,对吗?
当我检查链接时,它包含fref=fr-tab
,但没有&
或?
,只有一个分号。我尝试了很多让脚本工作。不幸的是,到目前为止我还没有成功。
请问怎么换线?
尝试使用以下代码的一部分打印数组:
$contents = $Curl->fetch_url($link);
if(preg_match_all('!href="([^"]+fref=fr_tab)"!',$contents,$aMatch))
{
print_r($aMatch);
exit;
}
else
1条答案
按热度按时间arknldoa1#
您的模式匹配
fref=fr_tab
,后面紧跟"
,因此如果url较长,则不匹配。例如,您可以在匹配后匹配
"
以外的可选字符,并使用单词边界来防止部分单词匹配。在regex101上查看匹配。
您可以使模式更具体,也匹配
;
,但如果您采用这种方法,我建议使用parse_url代替PHP_URL_QUERY
参见另一个regex demo。
请注意在问题中,您还使用连字符引用
fref=fr-tab
,但该模式使用下划线。