PHP:如何通过正则表达式将精确字符移到字符串末尾
我有一个如下所示的数组:PHP:如何通过正则表达式将精确字符移到字符串末尾,php,arrays,expression,str-replace,Php,Arrays,Expression,Str Replace,我有一个如下所示的数组: Array("string|||mfasdfhadskjfahsldfhcadkasldhfaf", "apple|||2345hrquwfiqfh4fhlqwu4f", "orange|||0erjoerhtqothcro") 我希望达到的目标是: Array("string", "apple", "orange") 我可以使用什么正则表达式删除| | |之后的所有字符 亲切问候,, masi将array\u map与简单的preg\u replace调用结合使用
Array("string|||mfasdfhadskjfahsldfhcadkasldhfaf", "apple|||2345hrquwfiqfh4fhlqwu4f", "orange|||0erjoerhtqothcro")
我希望达到的目标是:
Array("string", "apple", "orange")
我可以使用什么正则表达式删除| | |之后的所有字符
亲切问候,,
masi将array\u map与简单的preg\u replace调用结合使用
你只要把第一次之后的所有东西都换成
如果您需要的管道字符数正好是管道字符数的3倍,只需使用\ |{3}.$在您的简单示例中,使用strstr函数就足够了:
$arr = ["string|||mfasdfhadskjfahsldfhcadkasldhfaf", "apple|||2345hrquwfiqfh4fhlqwu4f", "orange|||0erjoerhtqothcro"];
$result = array_map(function ($s) {
return strstr($s, '|||', true);
}, $arr);
print_r($result);
输出:
Array
(
[0] => string
[1] => apple
[2] => orange
)
这里有两种方法,我推荐第二种,因为它不使用正则表达式 然而,preg_replace的优点是不需要编写循环 代码: 输出:
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
----
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
或strstr而不通过引用进行修改,您可以声明一个新的结果数组,如下所示:
foreach ($array as $value) {
$result[] = strstr($value, '|', true);
}
p、 当然,如果您的真实数据需要三个连续的管道,您可以将我的指针字符再扩展两次。我们希望看到您的编码尝试。您可以使用来了解正则表达式的情况,同时尝试编写正确的正则表达式
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
----
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
foreach ($array as $value) {
$result[] = strstr($value, '|', true);
}