我需要一个正则表达式字符串来从不同类型的 url 中提取参数,例如使用$_SERVER["REQUEST_URI"]
:
字符串 1:“/news/page/4”或字符串 2:“/news/weekly/page/4”
我需要在没有 last 的情况下提取字符串/page/[ID]
,我的意思是只有/news/page
or/news/weekly/
等。我该怎么做preg_replace
?
谢谢你。
您可以使用explode()代替正则表达式:
$delimiter = '/';
$parts = explode($delimiter, $_SERVER["REQUEST_URI"]);
$whatINeed = $parts[0] . $delimiter . $parts[1];
你应该可以使用:[A-Za-z/]+ 但是它会比只使用 substr 慢。编辑:不是 substr,而是爆炸。
正则表达式解决方案:
echo preg_replace('/^([\w\W]*)\/page\/\d*/','$1','/news/weekly/page/4');
输出:
/news/weekly
但你应该使用爆炸解决方案:
$parts = explode('/', $_SERVER["REQUEST_URI"]);
$url = $parts[0].'/'.$parts[1];
尝试:
$foo = explode('/', $_SERVER["REQUEST_URI"]);
$resultant_url = $foo[0].'/'.$foo[1];