我想只在需要时加载脚本,目前正在使用php。
<?php
$page = basename($_SERVER['REQUEST_URI']);
if ($page == 'shows.php' || $page == "/" || $page == '') {
?>
<script></script>
排除脚本的最佳做法是什么?排除脚本有助于加载时间吗? 如果有人有其他建议我会很高兴听到他们。
问题:我想从网址
获取show.phphttp://www.turbosaw.com/shows.php?action=viewShow&showId=30
我之前的php url查询(我调用它直到有人纠正我),不起作用,我认为这是因为它有所有额外的东西在php背后。
有什么想法吗?
答案 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"
}
希望这有帮助。