【发布时间】:2015-01-26 00:21:12
【问题描述】:
我只想获取不带任何参数的 url 的“更清洁”版本。 IOW...如果网址中有问号,请删除它,然后删除所有内容。
这是我当前的行:
preg_match_all('/<a(.*?)href=("|\'|)(.*?)("|\'| )(.*?)>/s',$content,$ahref);
为了在这里更清楚......我期待这个网址(例如):
/go/page/mobile_download_apps.html?&who=r,6GDewh28SCW3/fUSqmWqR_E9ljkcH1DheIMqgbiHjlX3OBDbskcuCZ22iDvk0zeZR7BEthcEaXGFWaQ4Burmd4eKuhMpqojjDE6BrCiUtLClkT32CejpMIdnqVOUmWBD
应该是:
/go/page/mobile_download_apps.html
【问题讨论】:
-
这不是诀窍吗?
/(<a href=")(.*)(\?.*)/s(缺少一些信息以提供更详细的答案...) -
@Benoît 是的。但仅在此示例中,不适用于其他情况,例如当
?不在时。 (而且 OP 只会不断重复这些正则表达式问题,而不会试图理解它们的作用。) -
最好的方法是使用一些 DOM 解析器获取 url,然后使用正则表达式删除尾随部分...即:获取所有内容直到第一个
?=> regex101.com/r/mD3sB1/1 -
这很容易删除之后的所有内容?但我在问是否可以直接通过正则表达式即时完成
-
@Enissay 完全删除它...(无需捕获)
标签: php regex string preg-match preg-match-all