【问题标题】:Cut string by substrings after none left在没有留下后通过子字符串剪切字符串
【发布时间】:2014-07-10 14:47:34
【问题描述】:
我有一个字符串Field-Text-Datepicker。我需要将其“分解”为以下数组:
array(
[0] => field-text-datepicker
[1] => field-text
[2] => field
);
我尝试了strrchr()、recursion 和for loops 的一些组合,但我所做的一切似乎都非常复杂且无效。有一些我看不到的简单方法吗?如果没有,我会发布我已经写的烂摊子。 :)
我为什么需要它?
为了更好地组织代码,我有时需要在一个文件中声明多个类。这是我的 SPL 自动加载器的问题,它根据类名加载文件。因此,我需要从最可能到最不可能加载所有可能的文件名。
提前致谢! :)
【问题讨论】:
标签:
php
string
recursion
autoload
strrchr
【解决方案1】:
使用带有可变偏移量的array_slice():
$arr = explode('-', strtolower($str));
for ($i = 1, $c = count($arr); $i < $c; $i++) {
$result[] = implode('-', array_slice($arr, 0, -$i));
}
Demo
【解决方案2】:
给你!
我刚刚测试过,它打印的正是你需要的东西 =)
<?php
$str = "Field-Text-Datepicker";
$str = strtolower($str);
$array = explode('-',$str);
$count = count($array);
$output_array = [];
for($i=1;$i<=$count;$i++)
$output_array[$count-$i] = implode('-',array_slice($array,0,$i));
var_dump($output_array);
?>