2012-08-02 64 views
0

我爲php腳本尋找了dmoz列表條目的函數,不幸的是,它是使用ereg創建的,並且在腳本工作時,它每次得到「depreciated」錯誤用過的。所以我決定將它從ereg轉換爲preg,它通過文檔應該是preg_match,問題在於,當值存在時,preg總是返回false。這裏是代碼:Preg_Match不會返回值,但ereg不會

  function getDmoz ($url) { 

     $url = "http://www.dmoz.org/search?q=".$url; 
     $data = file_get_contents($url); 
     if (ereg('<strong>Open Directory Sites</strong>', $data)) { 

      $value = YES; 

     } else { 

      $value = NO; 

     } 

     return $value; 

    } 

這是工作代碼。轉換我相信它應該像這樣

  function getDmoz ($url) { 

     $url = "http://www.dmoz.org/search?q=".$url; 
     $data = file_get_contents($url); 
     if (preg_match('<strong>Open Directory Sites</strong>', $data)) { 

      $value = YES; 

     } else { 

      $value = NO; 

     } 

     return $value; 

    } 

但由於某種原因,總是返回「否」,其中ereg會成功找到它。任何人都可以指出我在這裏錯過了什麼?

在此先感謝

+0

你需要做的不僅僅是改變函數名 – 2012-08-02 19:48:20

回答

0

你忘了分隔符字符添加到preg_match版本。以下是語法documentation

preg_match('!<strong>Open Directory Sites</strong>!', $data) 

第一個字符是分隔符,你可以使用任何你想要的,歷史上Perl使用/但當圖案包括大量的那些是有幫助的使用別的東西。

+0

感謝,這工作,我不能相信這是這麼簡單。 – 2012-08-02 19:50:36

0

試試這個:

if (preg_match('/<strong>Open Directory Sites<\/strong>/', $data)) {