PHP实现字符串层级拆分:获取递进式路径字符串
解决路径字符串递进拆分问题
嘿,我来帮你搞定这个需求!你想要把$tara = 'wordpress/corporate/business';拆分成逐步递进的三个路径字符串:'wordpress'、'wordpress/corporate'、'wordpress/corporate/business'对吧?先看看你原来的代码问题在哪儿:
你用explode('/', $tara)拆分路径部分是对的,但后续用substr_replace的思路走偏了——而且代码里的$i变量未定义,count($l)也用错了(字符串长度应该用strlen(),但就算修正也达不到预期效果)。
下面给你两种简单直接的实现方法:
方法一:循环累加拼接路径
这种方法直观易懂,逐步构建每一层的路径:
$tara = 'wordpress/corporate/business'; $parts = explode('/', $tara); $result = []; $currentPath = ''; foreach ($parts as $part) { // 若当前路径不为空,先加斜杠再拼接部分;为空则直接拼接 $currentPath .= ($currentPath ? '/' : '') . $part; $result[] = $currentPath; } // 输出结果 foreach ($result as $item) { var_dump($item); }
方法二:利用array_slice和implode拼接
这种方法更简洁,通过截取数组前N个元素再拼接:
$tara = 'wordpress/corporate/business'; $parts = explode('/', $tara); $result = []; // 循环截取前1、2、3个元素,再拼接成路径 for ($i = 1; $i <= count($parts); $i++) { $result[] = implode('/', array_slice($parts, 0, $i)); } // 输出结果 foreach ($result as $item) { var_dump($item); }
两种方法运行后,都会输出你期望的三个字符串结果~
内容的提问来源于stack exchange,提问作者Siska Brilian
相关产品推荐
相关产品推荐

