2014-05-15 170 views
-1

我有一個簡單的PHP數組:通配符搜索在PHP

$array = array('Michael','Marian','Martina'); 

我有以下功能來搜索字符串開頭的「MI」:

$array = preg_grep("/^Mi.*/", $array); 

1)如何修改正則表達式來搜索字符串的任何部分,而不僅僅是字符串的開始?例如搜索ar將返回Marian

2)如何使它不區分大小寫?例如搜索AR也將返回Marian

我是新來的正則表達式。謝謝

+0

刪除'^'並添加'i'修飾符。另請參閱PCRE手冊條目http://www.php.net/manual/en/pcre.pattern.php – PeeHaa

+0

哇。任何正則表達式教程都會告訴你。谷歌很多? – Rudie

回答

1

很簡單,您可以更改您的正則表達式模式並刪除指定它必須是字符串開頭的^。使用i修飾符可以實現不區分大小寫。

$matching_letters = 'ri'; 
$array = preg_grep("/{$matching_letters}/i", $array); 

// Marian 

演示:https://eval.in/151916

編輯:你也可以在這種情況下刪除.*(S),只是匹配的字母。

爲了將來的參考,Regex101.comPHPLiveRegex.com會爲你學習正則表達式的奇蹟。

+0

非常感謝:) –

+0

可以問正則表達式中{}'的用法是什麼? –

+0

這是一個PHP構造,用於插入上面的變量 - 純粹是爲了方便您將信件換入和換出。這與做「/」是一樣的。 $ matching_letters。 「/ I」' –