Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何按大写字母拆分驼色大小写字符串,但忽略首字母缩略词_Php - Fatal编程技术网

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'。