我怎么能用PHP获取网址的一部分?

时间:2013-07-08 15:35:44

标签: php

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

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

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

问题:我想从网址

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

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

有什么想法吗?

5 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

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

echo __FILE__;会为您提供上述网址的show.php

答案 2 :(得分: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数组,您可以获得自己的服务器和页面地址。

答案 3 :(得分:0)

  

首先,是的,你可以使用parse_url(),所以这个答案更多的是针对你实际做了什么,这是很容易的部分。

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

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

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

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

看起来你没有使用框架,也不会很快,所以这里有一个简单的建议:

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

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

你可以循环数组并检查这些路由是否在url中,并按你的意愿行事(即包含JS文件):

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

一个文件中执行此操作。将它包含在脚本顶部的某种“引导程序”中,然后您就不必在每个使用的页面上复制此检查。你只需要包含'检查文件'。

答案 4 :(得分: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"
}

希望这有帮助。