不能在PHP中使用不区分大小写的正则表达式

时间:2017-05-08 20:23:15

标签: php

我无法在php中创建一个正常的regexp。我在regexp模式下使用i标志,但它不会对我的脚本结果产生影响:

$page = "Test";
$page1 = "test";
var_dump(preg_match("#^test#i", $page));
// int(0)
var_dump(preg_match("#^test#i", $page1));
// int(1)

我真的无法意识到,在我犯了错误的地方,请帮助。

2 个答案:

答案 0 :(得分:2)

如果您想检查区分大小写,则必须删除i

$page = "Test";
$page1 = "test";
var_dump(preg_match("/^test/", $page));  // int(0)
var_dump(preg_match("/^test/", $page1)); // int(1)

如果你想检查案例 - 敏感,你必须添加i

$page = "Test";
$page1 = "test";
var_dump(preg_match("/^test/i", $page));  // int(1)
var_dump(preg_match("/^test/i", $page1)); // int(1)
  

演示: http://ideone.com/Ab9nrs

我在3v4l.org上尝试了你的代码,它在大多数PHP版本上都很好看:https://3v4l.org/5UeCu

答案 1 :(得分:0)

在PHP 7.1.2和5.3.4中,该代码返回两行的“int(1)”。您运行的是preg_match有错误的PHP版本,或者您的两个preg_match表达式中有一个看不见的控制字符,而您根本看不到它。