如何使用PHP按大写字母拆分字符串?

4

1
正常的 explode() 函数存在问题,因为它会移除所谓的“needle”(在您的情况下是大写字母)。因此,通常的 explode 无法完成任务。 - Manuel
是的,我尝试过 preg_split('/[ABCDEFGHIJKLMNOPRSTUVWXYZ]/', "CamelCaseString", -1, PREG_SPLIT_NO_EMPTY) 但是它返回的数组中没有大写字符。 - Ruan Mendes
3个回答

13

你应该使用正则表达式。 试一下这个:preg_match_all('/[A-Z][^A-Z]*/', "CamelCaseString", $results);

包含所有单词的数组将保存在$results[0]中。


没错,$results 将会是:Array ( [0] => Array ( [0] => 骆驼 [1] => 大写字母开头 [2] => 字符串 ) ) - Ivan
1
它对于像"MySQL"这样的字符串不起作用。它会给你"My"、"S"、"Q"、"L",这可能不是你想要的。 - Flambino
我还必须检查字符串是否全是大写(每个字母都分开),不是全小写(所有数据都丢失),以及其他一些事情。它不是完美的,但相当不错。 - T. Brian Jones
请参考以下问题的答案,这将更加有用:https://dev59.com/NWoy5IYBdhLWcg3wWss_ - T. Brian Jones

8
这似乎也可以运行
$split = preg_split("/(?<=[a-z])(?![a-z])/", "CamelCaseString", -1, PREG_SPLIT_NO_EMPTY);

它不会打断较长的大写字母序列,例如"MySQL"会变成"My"和"SQL"。

-1

split() 函数已被弃用,建议采用其他函数来解决问题。


嗯,是的,他特别要求提供除了“split”之外的另一种解决方案。 - Flambino
他的问题已经被编辑过了。最初他问如何使用split()来完成。感谢你的踩,尽管我的观点完全是正确的。 - Night Owl

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