PHP大小写不敏感的explode()函数

12

我有以下代码:

explode("delimiter", $snippet);

但我希望我的分隔符不区分大小写。

3个回答

36

只需使用preg_split()函数并传递标志i以实现不区分大小写:

$keywords = preg_split("/your delimiter/i", $text);

还要确保您传递给preg_split()的分隔符不包含任何特殊的正则表达式字符。否则,请确保正确转义它们或使用preg_quote()


1
(使用/i修饰符告诉preg_split执行不区分大小写的搜索) - rjz
是的,我必须等一段时间才能勾选它。 - Luis Liz

2

您可以先替换分隔符,然后像平常一样使用explode函数。这可以通过以下易读的一行代码完成:

str_replace($delimiter, ',', $string)

explode($delimiter,str_ireplace($delimiter,$delimiter,$snippet));

0
explode('delimiter',strtolower($snippet));
  1. 当有更多CPU可承受的函数可用时,永远不要使用昂贵的正则表达式。

  2. 除非你明确需要在字符串内混合变量,否则永远不要使用双引号。


3
如果我在拆分 SQL 字符串时,你将我的表名小写了怎么办?我们需要将分隔符小写,而保留字符串不变。 - Dr. Chocolate
@mutant_city 为什么在数据库、表和列名中会使用大写或驼峰命名法?良好的做法是使用全大写来表示SQL特定命令,而对于数据库、表和列名则使用全小写,这样的代码不仅更易读,而且更具可预测性。代码的可预测性在需要更新代码以符合更严格政策时非常重要。调试带有错误的SQL查询是唯一可能需要拆分SQL查询的时候(尽管我从未遇到过这种情况),所以我非常好奇是否存在合法的使用场景以及原因。严格的政策会导致成功! - John
@John 数据库命名约定因人而异,需要执行查询的人可能无法控制数据库模式。现实世界很混乱,会出现各种合法的用例,这些用例可能很难一开始就想象到。在我的情况下,我需要在实际运行查询之前获取未知查询结果记录的计数,并希望解析查询以将选择字段名称替换为“select count(*)”。因此,我在SO上寻找好的想法。 - user6096790
数组返回将丢失字符串的原始大小写。 - Anuj Shrestha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接