如何在PHP中处理URL和检索段

如何在PHP中处理URL和检索段,php,.htaccess,Php,.htaccess,我正在用搜索引擎优化友好模式的URL构建一个网站,比如 http://yourdomain.com/category/subcategory/finalcategory/topic_identifier/等 这里最后一个值topic_identifier是我用来查看数据库的,unique string只是替换unique id,我想看看层次结构的值,我可能也会得到一些分页值,比如 /topic\u identifier/p/2/a/3/f/5/ 在这里,我也需要从相同的URL获取p、a、f值。

我正在用搜索引擎优化友好模式的URL构建一个网站,比如

http://yourdomain.com/category/subcategory/finalcategory/topic_identifier/

这里最后一个值topic_identifier是我用来查看数据库的,unique string只是替换unique id,我想看看层次结构的值,我可能也会得到一些分页值,比如

/topic\u identifier/p/2/a/3/f/5/

在这里,我也需要从相同的URL获取p、a、f值。
有人能帮我摆脱这种逻辑吗?

检查以下代码。这可能对你有帮助

$url = 'http://yourdomain.com/category/subcategory/finalcategory/
topic_identifier/p/2/a/3/f/5/';

preg_match('/p\/\d+\/a\/\d+\/f\/\d+/', $url, $p);
$str = implode('/',$p);

$array = explode('/',$str);

echo 'p=>'.$array[1]."<br/>";
echo 'a=>'.$array[3]."<br/>";
echo 'f=>'.$array[5]."<br/>";
$url='1!'http://yourdomain.com/category/subcategory/finalcategory/
主题(u/p/2/a/3/f/5/);
预匹配('/p\/\d+\/a\/\d+\/f\/\d+/',$url,$p);
$str=内爆('/',$p);
$array=explode('/',$str);
回显'p=>'。$array[1]。“
”; 回显'a=>'。$array[3]。“
”; 回显'f=>'。$array[5]。“
”;
检查以下代码。这可能对你有帮助

$url = 'http://yourdomain.com/category/subcategory/finalcategory/
topic_identifier/p/2/a/3/f/5/';

preg_match('/p\/\d+\/a\/\d+\/f\/\d+/', $url, $p);
$str = implode('/',$p);

$array = explode('/',$str);

echo 'p=>'.$array[1]."<br/>";
echo 'a=>'.$array[3]."<br/>";
echo 'f=>'.$array[5]."<br/>";
$url='1!'http://yourdomain.com/category/subcategory/finalcategory/
主题(u/p/2/a/3/f/5/);
预匹配('/p\/\d+\/a\/\d+\/f\/\d+/',$url,$p);
$str=内爆('/',$p);
$array=explode('/',$str);
回显'p=>'。$array[1]。“
”; 回显'a=>'。$array[3]。“
”; 回显'f=>'。$array[5]。“
”;
类似于
preg_match('/p\/(\d+)/',$url,$p);echo$p[1]
?@putvande谢谢,我们可以使用preg\u match或其他php函数获取这些p、a、f值,但您无法获取主题标识符的确切位置,我需要把它放入一个变量中,这样我就可以用它查找数据库了……或者你可以简单地使用一个像Laravel这样的框架,将其作为路由处理。你说需要帮助从url中获取p、a和f的逻辑。类似于
preg_match('/p\/(\d+)/,$url,$p);echo$p[1]
?@putvande谢谢,我们可以使用preg\u match或其他php函数获取这些p、a、f值,但您无法获取主题标识符的确切位置,我需要把它放到一个变量中,这样我就可以用它查找数据库了……或者你可以简单地使用一个像Laravel这样的框架,将其作为路由处理。你说需要帮助逻辑得到p,a和f不在url中。为什么您的预匹配中的最后一个
d
有一个
+
,而所有其他的都没有?d检查url中的数字是的,我知道。但是正则表达式只检查url末尾的多个数字。例如,
/p/11/a/1/f/1
会失败。为什么preg\u匹配中的最后一个
d
有一个
+
,而所有其他的都没有?d检查URL中的数字是我知道的。但是正则表达式只检查url末尾的多个数字。因此,例如
/p/11/a/1/f/1
将失败。