PHP从URL导出路径

PHP从URL导出路径,php,mysql,uri,Php,Mysql,Uri,使用.htaccess将所有地址重写为index.php php需要计算出要包含的文件。此时,它在“/”上爆炸并执行foreach以确定是哪个文件。这会导致错误 首先我们得到URI 如果有一个地址,例如localhost/next page,那么我们希望包含一个具有该名称的文件和扩展名PHPinclude('content/'.$post..PHP')并将$table的全局变量作为'PAGES'和$post作为'next-page' 如果有两个,那么第一个应该被视为$table,第二个应该被视为

使用.htaccess将所有地址重写为index.php

php需要计算出要包含的文件。此时,它在“/”上爆炸并执行foreach以确定是哪个文件。这会导致错误

首先我们得到URI

如果有一个地址,例如
localhost/next page
,那么我们希望包含一个具有该名称的文件和扩展名PHP
include('content/'.$post..PHP')
并将
$table
的全局变量作为
'PAGES'
$post
作为
'next-page'

如果有两个,那么第一个应该被视为$table,第二个应该被视为$post,要包含的文件应该是
include('content/single-'.$post..php')

我们如何做到这一点?

首先,您需要(在这种情况下,这可能是路径,尽管没有您的重写规则,我们不知道)。然后:

如果某些案例之间存在显著的相似性,您可以在做了一些使情况正常化的准备工作后,允许从一个案例到下一个案例之间出现故障,例如:

    case 1:
        array_unshift($parts, 'PAGES'); // now $parts will have two elements
        // intentional fall-through
    case 2:
        // do whatever you need with $parts[0] and $parts[1]
        break;
最后:如果您需要对
$parts
中的项目进行大量处理,您可以使用以下构造为它们命名,以使代码更具可读性:

    case 2:
        list($table, $post) = $parts;
        // carry on as before but now $table == $parts[0] and $post == $parts[1]
    case 2:
        list($table, $post) = $parts;
        // carry on as before but now $table == $parts[0] and $post == $parts[1]