我需要检查一个字符串是否包含单词之间的空格,但不在开头或结尾。假设有这些字符串:
1: "how r u ";
2: "how r u";
3: " howru";
那么只有 2
应该是真的。我怎么能那样做?
原文由 Eddy Unruh 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要检查一个字符串是否包含单词之间的空格,但不在开头或结尾。假设有这些字符串:
1: "how r u ";
2: "how r u";
3: " howru";
那么只有 2
应该是真的。我怎么能那样做?
原文由 Eddy Unruh 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.2k 阅读
您可以验证修剪后的字符串是否等于原始字符串,然后使用
strpos
或str_contains
查找空格。如果您有兴趣,请提供更多信息
如果您使用
strpos()
,在这种情况下,您 不必 使用与false
的严格比较,这在以这种方式检查子字符串时通常是必需的。通常需要进行比较,因为如果字符串 _以子字符串开头_,strpos()
将返回0
,其计算结果为false
这里
strpos()
不可能返回0
,因为初始比较$str == trim($str)
消除了字符串以空格开头的可能性,因此您也可以根据需要使用它:如果你想使用正则表达式,你可以使用它来专门检查空格字符:
或检查是否有任何空白字符:
我做了一些简单的测试(只是定时重复执行此代码片段)并且 trim/strpos 解决方案的速度大约是 preg_match 解决方案的两倍,但我不是正则表达式大师,所以表达式可以优化为提高性能。