2012-05-21 80 views
-2

获取查询字符串参数我需要一个正则表达式的字符串来提取不同类型的网址,例如参数使用$_SERVER["REQUEST_URI"]PHP正则表达式 - 从重写URL

串1“/新闻/页/ 4”或字符串2:“/新闻/每周/页/ 4”

我需要提取字符串没有最后/page/[ID],我的意思是只有/news/page/news/weekly/等 如何与preg_replace办呢?

谢谢。

+0

你的重写规则是什么?这些参数可能在$ _GET – Jeroen

回答

0

正则表达式的解决方案:

echo preg_replace('/^([\w\W]*)\/page\/\d*/','$1','/news/weekly/page/4'); 

输出:

/news/weekly 

,但你应该使用爆炸的解决方案:

$parts = explode('/', $_SERVER["REQUEST_URI"]); 
$url = $parts[0].'/'.$parts[1]; 
+0

好吧,非常感谢:)我使用了正则表达式解决方案并且工作得很好,所以我怎么用正则表达式得到“/ news/page/[ID]”或者“/ news /每周/页/ [ID]“? :) –

+0

preg_match('/ \/page \ /((\ d +)/','“/ news/page/134'',$ matches); –

+0

$匹配[1]将是您的ID –

2

可以使用explode(),而不是正则表达式:

$delimiter = '/'; 
$parts  = explode($delimiter, $_SERVER["REQUEST_URI"]); 
$whatINeed = $parts[0] . $delimiter . $parts[1]; 
0

您应该能够使用:[A-ZA-Z /] + 但它会比较慢,然后只用SUBSTR。编辑:不substr,但爆炸。

0

尝试:

$foo = explode('/', $_SERVER["REQUEST_URI"]); 
$resultant_url = $foo[0].'/'.$foo[1];