Php 如何按大写字母拆分驼色大小写字符串,但忽略首字母缩略词
我想用大写字母将单词分开,这样就可以把骆驼套的绳子缝起来:Php 如何按大写字母拆分驼色大小写字符串,但忽略首字母缩略词,php,Php,我想用大写字母将单词分开,这样就可以把骆驼套的绳子缝起来: 但我不想让它分解首字母缩写: 检查下一个字母是否不是大写字母 $classname_arr = preg_split('/(?=[A-Z][^A-Z])/', $classname); $slug = strtolower(implode("-", array_filter($classname_arr))); // outputs "my-big-class" echo $slug; 注意:使用array_filter()删除空
但我不想让它分解首字母缩写:
检查下一个字母是否不是大写字母
$classname_arr = preg_split('/(?=[A-Z][^A-Z])/', $classname);
$slug = strtolower(implode("-", array_filter($classname_arr))); // outputs "my-big-class"
echo $slug;
注意:使用array_filter()删除空元素检查下一个字母是否不是大写字母
$classname_arr = preg_split('/(?=[A-Z][^A-Z])/', $classname);
$slug = strtolower(implode("-", array_filter($classname_arr))); // outputs "my-big-class"
echo $slug;
注意:使用array_filter()删除空元素尽管@Wee Zel的答案已被接受(并且有充分的理由),但我想给出一个扩展,这也适用于像MyFAQ
这样的情况:
<?php
$classname = "MyFAQ";
$classname_arr = preg_split('/(?=[A-Z][^A-Z])|(?<![A-Z])(?=[A-Z])/', $classname);
$slug = strtolower(implode("-", array_filter($classname_arr))); // outputs "my-faq"
echo $slug;
虽然@Wee Zel的答案已被接受(而且理由充分),但我想给出一个扩展,这同样适用于MyFAQ
:
<?php
$classname = "MyFAQ";
$classname_arr = preg_split('/(?=[A-Z][^A-Z])|(?<![A-Z])(?=[A-Z])/', $classname);
$slug = strtolower(implode("-", array_filter($classname_arr))); // outputs "my-faq"
echo $slug;
你需要像这样的smth,这似乎是可行的:(?-EDIT:还没有完全完成。它在开始时也会分裂。EDIT2:就像你原来的正则表达式一样…概念有问题-一个字母的单词,例如你有一个问题
你需要像这样的smth,这似乎是可行的:(?-EDIT:还没有完全完成。它在开始时也会分裂。EDIT2:就像你原来的正则表达式一样…这个概念有问题-一个字母的单词,例如youHaveAProblem
sweet,它正在工作。正则表达式很有趣,不是吗?哦,对array\u filter()的调用也很好。)
。我向你投了一票,因为我将你的解决方案用于我的扩展!好极了,它正在工作。正则表达式非常有趣,不是吗?哦,对数组过滤器()的调用很好。
。我向你投了一票,因为我将你的解决方案用于我的扩展!嗯,仔细考虑一下这个…。“由[大写字符后跟非大写字母]分割”或者[大写字母前不加大写字母]”。试着想想这可能会如何打破。是的,这有点奇怪,但通过了大多数测试。通过了4个测试:MyBigList;FAQList;MyFAQ和你有一个问题-所以我向上投票:)好的,我刚刚抛出了一大堆场景,它运行得很好。谢谢你们两位!!!我认为“MyClassNNName”
应该吐出我的ClassNNName
,因为大写字母后的小写字母表示一个单独的单词。它至少超出了我的需要,所以我接受这个“n.Hmm,仔细考虑一下……”[大写字符后接非大写字母]或[大写字母前不接大写字母]”。试着想想这可能会如何打破。是的,这有点奇怪,但通过了大多数测试。通过了4个测试:MyBigList;FAQList;MyFAQ和youHaveAProblem-因此我向上投票:)好的,我刚刚抛出了一大堆场景,它运行得很好。谢谢你们两位!!!我认为“MyClassNNName”
应该吐出我的ClassNNName
,因为大写字母后的小写字母表示一个单独的单词。它至少超出了我的需要,所以我接受这个'n'。