med*_*edk 0 php arrays foreach explode
我想从另一个地方创建一个字符串:
1-第一个字符串是:"4-3 | 5-2 | 9-6 | 7-1 | 2-8"
2-新字符串必须是:"4,5,9,7,2"
我有这段代码,但它不起作用:
$string_1 = '4-3|5-2|9-6|7-1|2-8';
$array_1 = explode('|', $string_1);
$string_2 = '';
foreach ( $array_1 as $item ) {
$array_2 = explode('-', $item);
foreach ( $array_2 as $item_id => $item_value ) {
$string_2 .= ($string_2 == '') ? $item_id : ', ' . $item_id;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用RegEx执行此任务?
使用正则表达式的代码:
$string_1 = '4-3|5-2|9-6|7-1|2-8';
preg_match_all('/(\d+)-\d+\|?/',$string_1,$matches);
$string_2 = implode(", ", $matches[1]);
Run Code Online (Sandbox Code Playgroud)
它比循环遍历字符串的每个字符更有效.
正则表达式解释说:
正则表达式可视化为RailRoad图:

(\d+):第一个\d匹配一个数字.这+意味着一次或多次.它()周围创建了一个组,这意味着匹配将存储在$matches数组中-:紧接着简单的破折号\d+:然后再出现一次或多次数字\|?:和一个管道角色\|(需要转义).这?意味着只有一个或没有管道.然后,preg-match-all将搜索给定字符串中的所有可能(重复)匹配.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |