2013-07-08 81 views
1

我只想在需要的时候加载脚本,目前正在使用php。我怎样才能得到一部分的网址与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网址查询(什么我打电话给它,直到有人纠正我),没有工作,我以为这是因为它拥有所有额外的东西背后的PHP。

任何想法?

+5

http://php.net/manual/en/function.parse-url.php –

+0

或'$ url =“http://www.turbosaw.com/shows.php?action=viewShow&showId=30”; $ url = explode(“?”,basename($ url)); echo $ url [0];' – Fallen

+0

您是否正在加载大量或很多非常大的脚本?如果不是,那么它可能是矫枉过正,因为它们已经被缓存在下一页,而不是反复处理,看看这个页面是否需要它,如果该页面需要它等等。 – Anigel

回答

0

首先,是的,你可以使用parse_url(),所以这个答案是更加针对你与该做些什么,一旦你真正得到它,这是比较容易的部分。

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

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

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

但是,这看起来并不是最好的做事方式。你也可以使用正则表达式来做到这一点,但它看起来像你试图找出某种路由机制。

可能做的是类似于Symfony2's routing mechanism,它有一个预先建立的“地图”的路线来检查。它看起来像你没有使用框架,不会很快,所以这里有一个简单的建议:

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

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

您可以在阵列周围循环,并检查是否有这些路线是在URL中,并且如你所愿做(即包括JS文件):

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

做,在一个文件。将其包含在脚本的顶部,以一种'引导程序'的形式,然后您不必在每个使用的页面上复制此检查。你只需包含'检查文件'。

+0

这看起来像一个很好的解决方案!我要去试试 – DoughertySaw

+0

OP正在寻找一种方法来从URL中提取脚本名称,也就是解析。 'strstr()'对于这个问题确实是不安全的。我不确定实现类似于symfony的路由系统实际上是OP所需要的。 – thibauts

+0

@ thibauts OP有两个问题,最后一个问题相当于“我如何从网址解析此问题” - 其他答案提供了哪些答案。 OP询问的第一个问题等价于“我只想在需要时加载脚本”。因此,我提供了第一个答案,深入并且比我真正应该做的更多的努力,并且指出来自其他问题的简单函数('parse_url()')用于简单解析。阅读问题的第一句和第二句,然后OP很好地回答他或她的问题。 – Jimbo

0

可以拿到剧本的使用PHP魔术常量的文件名:

echo __FILE__;会给你shows.php针对上述网址

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阵列。

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' 
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" 
} 

希望这有助于。

相关问题