Preg_Match 精确单词并从字符串文本中输出单词

Preg_Match exact Word and Output the Word from String Text

如何输出不区分大小写的匹配词? PHP代码:

if(preg_match("/(?i)(?<= |^)" . $Word . "(?= |$)/", $String)) {
 // If Exact Word is Match Case Insensitive
}

例如我的字符串是: 你好,视频很有趣。

我想从字符串中获取“视频”,但是因为我的 PHP preg_match 不区分大小写,我正在寻找“视频”,所以我需要从字符串中获取输出“视频”字符串到.

另一个字符串示例: 你好,视频很有趣 从字符串中获取输出“ vIDeo ”。

另一个字符串示例: 你好,视频很有趣。 此字符串不需要输出“ vIDEOwas ”,因为它不匹配确切的词。

我需要这个脚本,这样我就可以在搜索后查看在字符串中找到确切单词的方式。

您可以将找到的匹配项替换为 $Word,然后比较两个字符串

$String = 'Hello there, the Video was funny';
$Word = 'Video';
$s2 = preg_replace("/(?i)(?<= |^)" . $Word . "(?= |$)/", $Word, $String);

if ( $s2 === $String ) {
    echo "found";
}else {
    echo "NOT found";
}

另一个解决方案

$String = 'Hello there, the Video was funny';
$Word = 'Video';
$s = explode(' ',$String);
foreach($s as $w) {
    if( $w === $Word) {
        echo $w;
        break;
    }
}

您可以使用 preg_match() 的第三个参数来获取匹配;在您的情况下,最多会有一个匹配的模式:

$body = 'Hello there, the Video was funny';
$search = 'video';

if (preg_match('/\b' . preg_quote($search, '/') . '\b/i', $body, $matches)) {
  print_r($matches[0]); // Video
}

对您的代码进行的一些其他更改:

  1. 如果您不知道搜索字词的来源,请始终使用 preg_quote()
  2. 我使用 /i 修饰符而不是 (?i)
  3. 我使用零宽度 \b 断言,而不是后视断言和前瞻断言。