Laravel PHP中基于不规则反斜杠分割字符串
解决Laravel/PHP中按不定数量反斜杠分割字符串的问题
没问题,这个需求用正则分割就能轻松搞定,我给你具体方案:
你的核心问题是要把连续的一个或多个反斜杠作为分隔符,把字符串拆分成数组——之前用str_replace直接替换反斜杠的思路不对,因为这样会直接丢掉分割的边界,导致所有内容连在一起。
具体实现代码
在PHP(Laravel基于PHP,直接用即可)中,我们可以用preg_split函数,搭配匹配连续反斜杠的正则表达式:
// 你的输入字符串(注意PHP中反斜杠需要转义,所以示例里的反斜杠数量要对应) $input = "abcd\\efg\\\\hij\\klm\\\\\\\opq"; // 用preg_split分割:匹配一个或多个连续的反斜杠作为分隔符 $outputArray = preg_split('/\\+/', $input); // 输出结果就是你要的数组 print_r($outputArray);
运行这段代码后,输出的数组就是:
Array ( [0] => abcd [1] => efg [2] => hij [3] => klm [4] => opq )
更健壮的版本(处理首尾反斜杠)
如果你的输入字符串可能在开头或结尾出现反斜杠(比如\\abcd\\efg\\),分割后会产生空元素,这时候可以加上PREG_SPLIT_NO_EMPTY参数自动过滤空值:
$outputArray = preg_split('/\\+/', $input, -1, PREG_SPLIT_NO_EMPTY);
这样即使首尾有反斜杠,也只会得到有效内容的数组。
内容的提问来源于stack exchange,提问作者Alladin
相关产品推荐
相关产品推荐

