2011-08-21 44 views
1

我想用preg_match找到某個文字字符串中的某個字。PHP preg_match找到某個詞

$pattern = "/" . $myword . "/i"; 

這種模式會發現,單詞「」內「一卡通」 ...... 我只需要匹配出現的某些詞的位置。

P.S這個詞可能在文本中的任何地方。 感謝

回答

5

word-boundaries環繞你的正則表達式:

$pattern = "/\b" . $myword . "\b/i"; 

,或者,如果你$myword可能包含正則表達式,元字符,這樣做:

$pattern = "/\b" . preg_quote($myword) . "\b/i"; 
0

試試這個:

$pattern = "/\b" . $myword . "\b/i"; 

在正則表達式中,\b轉義字符代表 「單詞邊界」 字。通過將搜索詞包裹在這些邊界匹配中,確保您只會匹配該詞本身。

0
$subject = "abcdef"; 

$pattern = '/^def/'; 

preg_match($pattern, $subject, $matches, PREenter code hereG_OFFSET_CAPTURE, 3); 

print_r($matches); 

模式

的模式搜索,作爲一個字符串。

subject

輸入字符串。

匹配

如果提供的比賽,則充滿了搜索的結果。 $matches[0]將包含匹配完整模式的文本,$matches[1]將具有匹配第一個捕獲的括號的subpattern的文本,依此類推。

標誌

標誌可以是下列標誌:

PREG_OFFSET_CAPTURE

如果該標誌,對每個出現的匹配結果附屬的字符串偏移也將被退回。注意這改變匹配的值到一個數組,每一個元素是一個數組由匹配字符串中的偏移量爲0和它的字符串偏移量在受試者偏移1.

偏移

通常,搜索從開始主題字符串的開始。可選參數偏移量可用於指定開始搜索的替代位置(以字節爲單位)。

例子:

if (preg_match('/;/', $_POST['value_code'])) 

    { 
     $input_error = 1; 
     display_error(_("The semicolon can not be used in the value code.")); 
     set_focus('value_code'); 
    } 
+0

你回答什麼問題? – Toto

+0

感謝您的意見 –