1

我只想在需要时加载脚本并且目前正在使用 php。

<?php 
    $page = basename($_SERVER['REQUEST_URI']);
    if ($page == 'shows.php' || $page == "/" || $page == '') {
?>
<script></script>

排除脚本的最佳做法是什么?排除脚本会帮助加载时间吗?如果有人有其他建议,我会很高兴听到他们。

问题:我想从 url 获取 show.php

http://www.turbosaw.com/shows.php?action=viewShow&showId=30

我之前的 php url 查询(在有人纠正我之前我一直在调用它)不起作用,我认为这是因为它在 php 后面有所有额外的东西。

有任何想法吗?

4

5 回答 5

1

您可以在 PHP 中 使用parse_url函数。

$url = "http://www.turbosaw.com/shows.php?action=viewShow&showId=30";

$parsed_url = parse_url($url);
$path = $parsed_url['path']; // '/shows.php'

//Now to take off front '/'
$path = substr($path, 1); // 'shows.php'
于 2013-07-08T15:42:42.487 回答
0

您可以使用 PHP 魔术常量获取脚本的文件名:

echo __FILE__;会给你以上网址的shows.php

于 2013-07-08T15:40:56.880 回答
0

您可以使用 PHP 的内置parse_url()函数。

$url = 'http://www.turbosaw.com/shows.php?action=viewShow&showId=30';
print_r(parse_url($url));

会输出:

Array
(
    [scheme] => http
    [host] => turbsaw.com
    [path] => /path
    [query] => action=viewShow&showId=30
)

$_SERVER如果查看数组,您可以获得自己的服务器和页面地址。

于 2013-07-08T15:41:03.277 回答
0

首先,是的,您可以使用parse_url(),所以这个答案更针对您在实际获得它后所做的事情,这是很容易的部分。

可以检查“shows.php”是否包含在 url 字符串中:

if (stristr($url, 'shows.php')) { ...

注意:stristr() 不区分大小写,strstr() 区分大小写

然而,这看起来并不是最好的做事方式。您也可以使用正则表达式来执行此操作,但实际上看起来您正在尝试找出某种路由机制。

可以做的是类似于Symfony2 的路由机制,它有一个预先构建的路由“地图”来检查。看起来您没有使用框架并且不会很快使用,所以这里有一个简单的建议:

有一个包含文件,它只检查 url 是否在 url 的数组中,如果是,则输出代码以包含 JavaScript 文件。

$routes = array(
    '/',
    '/shows.php'
);

您可以循环数组并检查这些路由是否在 url 中,然后按照您的意愿进行操作(即包含 JS 文件):

foreach ($routes as $route)
{
    if (in_array($route, $yourURL))
    {
        // Include your JS file here
        break;
    }
}

一个文件中执行此操作。将它包含在脚本顶部的“引导程序”中,这样​​您就不必在使用的每个页面上重复此检查。您只需包含“检查文件”。

于 2013-07-08T15:43:11.950 回答
0

您可以parse_url()为此目的使用函数。

代码:

<?php

$url = "http://www.turbosaw.com/shows.php?action=viewShow&showId=30";
var_dump(parse_url($url));

?>

输出:

array(4) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(16) "www.turbosaw.com"
  ["path"]=>
  string(10) "/shows.php"
  ["query"]=>
  string(25) "action=viewShow&showId=30"
}

希望这可以帮助。

于 2013-07-08T15:43:40.080 回答