2015-04-15 14 views
2

好吧所以,在我的代碼,我有一個URL,它被傳遞到我的功能:testURL($url),其中,依次是:不是一個巨大的對比子的更好的方式,如果環路

  1. 測試的base url是否它的結構域('http://www.example.com'
  2. 測試的各個子:

    • ShowForum
    • Amex
    • Owners
    • ManagementCenter
    • WeatherUnderground
    • MapPopup
    • asp
    • pages
  3. 返回true如果有base url,但不匹配SUBST戒指,否則return false;

下面的代碼

function testURL($url){ 
    if ((substr($url, 0, 23) == "http://www.example.com/") && (substr($url, 23, 3) != "asp") && (substr($url, 23, 4) != "Amex") && (substr($url, 23, 5) != "pages") && (substr($url, 23, 16) != "ManagementCenter") && (substr($url, 23, 16) != "Owners") && (substr($url, 23, 9) != "ShowForum") && (substr($url, 23, 8) != "MapPopup") && (substr($url, 23, 18) != "WeatherUnderground")) { 
     return false; 
    } else { 
     return true; 
    } 

例子:

testURL('http://www.example.com/Amex'); --> returns true 
testURL('http://www.example.com/PayPal'); --> returns false 

這就是所謂的在我的情況,如:

if (testURL('http://www.example.com/Visa')){ 
    return; 
} 

被禁止的子字符串列表隨着時間的推移,會變得更大。 那麼,有沒有更好的方法來匹配不同長度的子字符串,然後那個巨大的循環?

提前致謝!

+1

什麼是大的圖片?哪些網址來自?這裏是他們正在使用? –

回答

1

這應該爲你工作:

(在這裏我只是解析URL與parse_url(),然後在那裏我檢查主機相匹配並且如果路徑不與in_array()陣列中)

<?php 

    function testURL($url) { 
     $parsed = parse_url($url); 
     if($parsed["host"] == "www.example.com" && !in_array(explode("/", $parsed["path"])[1], ["asp", "Amex", "WeatherUnderground", "MapPopup", "ShowForum", "Owners", "ManagementCenter", "pages"])) 
      return false; 
     else 
      return true; 
    } 

?> 
+0

如果頁面的網址是'/ pages/aboutus.html',怎麼辦? – Quill

+1

@Quill問題你想做什麼?你還只是想比較第一個文本,例如'頁面'在這裏? – Rizier123

+0

我想比較url是否適合指定的文件夾。這意味着,因爲它在'/ pages'目錄中,它會返回false。 – Quill

相關問題