gpt4 book ai didi

php - 如何从由 ","分隔并后跟 - 的字符串形成两个数组?

转载 作者:可可西里 更新时间:2023-11-01 00:19:44 25 4
gpt4 key购买 nike

$str="a,b,c,d-e,f,g,h"

我正在尝试从 $str 中提取在一个数组中以“,”分隔且在“-”之前的字符串,以及在数组中以“,”分隔且在“-”之后的字符串第二个数组。所以 $arr1=array(a,b,c,d);$arr2=array(e,f,g,h);。我只是以 $str 为例,通常我希望它适用于相同形式的任何字符串,即 $str=s1,s2,s3,s4,s5,... .-r1,r2,t3....

注意:如果 $str 没有“-”,则 $arr2 消失,而 $arr1 包含分隔的元素数组通过在 $str 中的 ','。

这是我试过的

preg_match_all('~(^|.*,)(.*)(,.*|\-|$)~', $str, $arr1);
preg_match_all('~(-|.*,)(.*)(,.*|$)~', $str, $arr2);

然而,每个数组都带有一个包含字符串 str 的元素。有谁知道为什么这不起作用。

最佳答案

您所有的正则表达式模式都不是最优的,似乎使用 explode 更容易解决这个任务和 array_map :

array_map() returns an array containing all the elements of array1 after applying the callback function to each one. The number of parameters that the callback function accepts should match the number of arrays passed to the array_map()

$str="a,b,c,d-e,f,g,h";
$ex = array_map(function ($s) {
return explode(",", $s);
}, explode("-", $str));
print_r($ex);

参见 IDEONE demo

结果:

Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)

[1] => Array
(
[0] => e
[1] => f
[2] => g
[3] => h
)

)

关于php - 如何从由 ","分隔并后跟 - 的字符串形成两个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32645677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com