PHP将数组’a’,’b’,’c’转换为’a / b / c’,’a / b’,’a
发布时间:2020-12-13 22:34:24 所属栏目:PHP教程 来源:网络整理
导读:我有一个uri,想要得到一系列以完全uri血统开始的部分,直到我只有第一个uri部分为止.我也有域名,但段从末尾开始拼接. String 'a/b/c' to array('a/b/c','a/b','a')String 'test.domain.com' to array('test.domain.com','domain.com','com') 基于我的初始方法
我有一个uri,想要得到一系列以完全uri血统开始的部分,直到我只有第一个uri部分为止.我也有域名,但段从末尾开始拼接.
String 'a/b/c' to array('a/b/c','a/b','a') String 'test.domain.com' to array('test.domain.com','domain.com','com') 基于我的初始方法和第二种方法的答案和第三种方法,我想知道哪一种是最快的,也许还有第四种方法更好…… 方法1: function explode_special($delimiter,$string,$reverse = false) { if (strpos($string,$delimiter) === false) return array($string); $segments = explode($delimiter,$string); if ( ! $reverse) { array_walk($segments,function($v,$k,$d) use(&$segments,&$delimiter) { $d[$k] = implode($delimiter,array_slice($segments,(count($segments) - $k))); },&$parts); } else { array_walk($segments,$k)); },&$parts); } return $parts; } 方法2: function explode_special($delimiter,$string); $parts = array(); while ($segments) { $parts[] = implode($delimiter,$segments); if ($reverse) { array_shift($segments); } else { array_pop($segments); } } return $parts; } 方法3: function explode_special($delimiter,$delimiter) === false) return array($string); $parts = array($string); for ($i = substr_count($string,$delimiter); $i > 0; $i--) { $parts[] = $string = $reverse // ? trim(strstr($string,$delimiter),$delimiter) ? substr($string,strpos($string,$delimiter) + 1) : substr($string,strrpos($string,$delimiter)); } return $parts; } 输出: // explode_special('/','a/b/c') = array('a/b/c','c'); // explode_special('.','test.domain.com',true) = // array('test.domain.com','com'); 解决方法function multisplit($delim,$str) { $parts = explode($delim,$str); $arr = Array(); while($parts) { $arr[] = implode($delim,$parts); array_pop($parts); } return $arr; } 使用该功能,您只需调用multisplit(“/”,“a / b / c”);它将返回[‘a / b / c’,’a / b’,’a’].同样,调用multisplit(“.”,“test.domain.com”);并得到[‘test.domain.com’,’test.domain’,’test’]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |