Php 获取URL并忽略其他URL

Php 获取URL并忽略其他URL,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试获取所有href URL,除了那些包含“get/index.php”和“PICSNUM”的URL 我哪里做错了? Regex让我有点困惑您可以使用dom解析器来获取href的值。如果已找到值,则可以使用负前瞻来断言字符串不以/get开头或包含/PICSNUM 该模式还不能工作的原因是/PICSNUM没有直接跟随在第一个查找之后 ^(?!(?:/get|\S*/PICSNUM))\S+ | 您可以在现有模式中使用替换,但这不是很有效 相反,您可以使用捕获组: href="(?!(?:/

我正在尝试获取所有href URL,除了那些包含“get/index.php”和“PICSNUM”的URL

我哪里做错了?
Regex让我有点困惑

您可以使用dom解析器来获取href的值。如果已找到值,则可以使用负前瞻来断言字符串不以
/get
开头或包含
/PICSNUM

该模式还不能工作的原因是
/PICSNUM
没有直接跟随在第一个查找之后

^(?!(?:/get|\S*/PICSNUM))\S+
|

您可以在现有模式中使用替换,但这不是很有效

相反,您可以使用捕获组:

href="(?!(?:/get/index\.php|\S*/PICSNUM/))([a-z0-9-_/.]+)

您是否尝试为HREF添加结束标记?我的意思是,你告诉它,我必须从“href=”开始,然后是一些东西,但永远找不到最后可以找到的东西。我尝试了:(?你应该使用DOM解析方法,这样会容易得多,因为在从所有href获得纯文本后,你将能够使用更简单的字符串检查方法。使用regex,你可能想要
href=“\K(?)?![^”]*\/(?:get\/index\.php | PICSNUM))[^”]+
,请参阅。
(?<=href=")(?!\/(get|PICSNUM))[a-z0-9-_\/.]+
/video5505298733/travel_and_tourism_recovery_coronavirus.
/midia54891337/
^(?!(?:/get|\S*/PICSNUM))\S+
href="(?!(?:/get/index\.php|\S*/PICSNUM/))([a-z0-9-_/.]+)