2013-08-24 45 views
2

我正在尋找一種方法,以便當我在其中搜索的字符串包含某個點後的某個字符時,我的php腳本可以給出正確或錯誤的確切順序。檢查字符串名稱中的點

例如:

我的字符串是:.htpassword

當它發現在含點其次是一些字母,數字和只有在爲了我的數組的字符串我的腳本可以只給真。

我已經看過strpos()函數,但不符合我的需要,因爲我有一些文件包含字符後帶有點的字符。

有效匹配:

  • (點)(接着字母表中的任何字符)

無效匹配:

  • (點)(點)的(後面是字母表中的任何字符)
  • (某些字符)(點)(一些字符)

我的腳本到目前爲止,我已經寫了:

$arr_strings = $this->list_strings(); 

      $reg_expr_dot = '/\./'; 
      $match = array(); 

      foreach ($arr_strings as $string) { 
       if (preg_match_all($reg_expr_dot, $file, $match) !== FALSE) { 
        echo "all strings: </br>"; 
        echo $match[1] . "</br></br>"; 

       } 
      } 

在此先感謝您的幫助!

親切的問候

+0

https://www.google.co.uk/search?q=regular+expression+syntax – Dave

+3

「包含點後跟一些字符」。什麼字符?非點?任何字符?點的前面的字符怎麼樣? –

+1

向我們展示有效匹配的示例以及無效匹配的示例 –

回答

3

試試這個:(如果我很理解)

$arr_strings = $this->list_strings(); 

$reg_expr_dot = '/^\.[a-z]+$/i'; 

$intro = 'all strings: <br/>'; 
foreach ($arr_strings as $string) { 
    if (preg_match($reg_expr_dot, $string, $match)) { 
     echo $intro . $match[0]; 
     $intro = '<br/>'; 
    } 
} 

,以確保整個字符串是完全一樣的在你最瘋狂的夢想,你可以使用錨(在開始^和結束$)otherwhise你的模式可以匹配一個子字符串並返回true。 (您避免匹配zzzz.htaccess.htaccess#^..+=

字符類別[a-z]也包含大寫字母,因爲我在模式的末尾使用了i修飾符(不區分大小寫)。

+1

Meta:[應正則表達式的答案包含一個解釋?是的。](http://meta.stackexchange.com/questions/177757/are-answers-that-just-contain-a-regular-expression-pattern-really-good-answers) –

+0

@ m.buettner:等一下分鐘,我不知道是什麼問題。 –

+0

謝謝,這是我的問題的解決方案!同樣非常感謝你對使用過的正則表達式進行更多的解釋。隨着文檔鏈接,我應該更好地理解正則表達式的工作原理。 – Dragon54

1

試試這個/^\.[a-zA-Z]+/ - 如果有其他標準,請告訴我。我以爲 '。'其次是任何小寫/大寫字符

+0

@ m.buettner謝謝 – JLewkovich

1

我不知道我是否完全理解這個問題,但像/^\\.[a-zA-Z]+$/u這樣的東西應該適合您的需求。

$strings = $this->list_strings(); 
    $matches = array(); 

    foreach($strings as $string){ 
     if(preg_match("/^\\.[a-zA-Z]+$/u", $string)){ 
      $matches[] = $string; 
     } 
    } 

    echo "all strings: </br>"; 

    foreach($matches as $match){ 
     echo $match."</br>"; 
    } 

讓我知道它是怎麼回事。

+0

如果你使用的是單引號,你不需要加任何反斜槓。 –