Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何通过正则表达式将精确字符移到字符串末尾_Php_Arrays_Expression_Str Replace - Fatal编程技术网

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);
}