2013-07-08 34 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" 
} 

希望這有助於。

相關問題