0

此文件中的所有内容都以 $_GET['q'] 调出主域名的方式设置,网站中的其他目录以这种方式调出: else if (substr($_GET['q'], 0, 7) == 'quotes/') 如果我想要一个名为:ultimate-优惠和低价,我会使用

else if (substr($_GET['q'], 0, 30) == 'ultimate-deals-and-low-prices/')

这有意义吗,或者我会以另一种方式调用我的目录,而不必让 php 调用目录文件名的子字符串。我知道这是子字符串的作用,但我只看到它用于少于 10 个字符。如果我的目录有更多字符,我还会使用子字符串吗?

这是本文档中 if 语句的开头:

require_once(getcwd() ."/db/db_pagetitle.php");
print get_page_title($_GET['q']);
if (isset($_GET['q']) && $_GET['q']) {
    if (file_exists(getcwd() .'/pages/'. $_GET['q'] .'.php')) {
        require_once(getcwd() .'/pages/'. $_GET['q'] .'.php');

比它进入

else if (substr($_GET['q'], 0, 7) == 'quotes/') 

如何调用我的目录?

谢谢?

4

3 回答 3

0

strpos怎么了?

<?php

if (file_exists($sanitizedPath)) {

} elseif (strpos($_GET['q'], "ultimate-deals-and-low-prices/") === 0) {

} elseif (strpos($_GET['q'], "some-other-directory/") === 0) {

}

更少打字,更少出错,更快。

于 2011-10-23T20:51:28.103 回答
0

您仍然可以使用 substr,超过 10 个字符没有问题 :) 换句话说,您可以完全使用您发布的代码(如果您不介意打字):else if (substr($_GET['q'], 0, 30) == 'ultimate-deals-and-low-prices/')

但是,如果所有文件夹都有一些通用逻辑(例如,cd进入其中或在其中搜索文件),您不必为每个文件夹编写 else 分支,您可以使用类似的东西:

if (isset($_GET['q']) && $_GET['q']) {
    if (file_exists(getcwd() .'/pages/'. $_GET['q'] .'.php')) {
        require_once(getcwd() .'/pages/'. $_GET['q'] .'.php');
    } else if (is_dir(getcwd() . '/pages/' . $_GET['q'])) {
        // do whatever you want to do with the folder
    }
}

如果您要编写更多代码,则更容易理解您要做什么。

于 2011-10-23T17:44:04.323 回答
0

如果您要使用多个关键字,则可以使用检测系统。

$match[]='ultimate-deals-and-low-prices/';
$match[]='users/';
$match[]='imgs/';
foreach($match as $k=>$v){
$l=strlen($v);
$s=substr($_GET[q],0,$l);
if ($v==$s) //Code to run...
}
于 2011-10-23T19:13:56.683 回答