我想从另一个地方创建一个字符串:
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;
}
}
如何将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]);
它比遍历字符串的每个字符要有效得多。
正则表达式解释:
正则表达式可视化为RailRoad图:
(\d+)
:第一个\d
与数字匹配。所述+
装置的一个或多个次。它()
周围创建了一个组,这意味着匹配项将存储在$matches
数组中-
:后跟一个简单的破折号\d+
:然后有一个或多个其他数字\|?
:和一个竖线字符\|
(需要转义)。的?
手段,这正是一个有或没有管。然后preg-match-all将搜索给定字符串中所有可能的(重复的)匹配项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句