2011-08-21 70 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

感谢您的意见 –