我正在尝试使用preg_match在文本字符串中查找某个字词。
$pattern = "/" . $myword . "/i";
此模式会在“卡通”中找到“ car ”这个词...... 我只需要出现某个单词的匹配。
P.S这个词可能在文本的任何地方。 感谢
答案 0 :(得分:5)
使用word-boundaries包装正则表达式:
$pattern = "/\b" . $myword . "\b/i";
或者,如果您的$myword
可能包含regex-meta-chars,请执行以下操作:
$pattern = "/\b" . preg_quote($myword) . "\b/i";
答案 1 :(得分:0)
试试这个:
$pattern = "/\b" . $myword . "\b/i";
在正则表达式中,\b
转义字符表示“单词边界”字符。通过将搜索词包装在这些边界匹配中,您可以确保只匹配单词本身。
答案 2 :(得分:0)
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREenter code hereG_OFFSET_CAPTURE, 3);
print_r($matches);
要搜索的模式,作为字符串。
输入字符串。
如果提供了匹配,那么它将填充搜索结果。 $matches[0]
将包含与完整模式匹配的文字,$matches[1]
将包含与第一个捕获的括号subpattern
匹配的文字,依此类推。
标志可以是以下标志:
如果传递此标志,则对于每个发生的匹配,还将返回附加字符串偏移量。请注意,这会将匹配的值更改为一个数组,其中每个元素都是一个数组,该数组由偏移量为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');
}