Вот два способа, я рекомендую второй, потому что он не использует регулярные выражения.
Однако, хорошая вещь в preg_replace()
заключается в том, что вам не нужно писать цикл.
Код: ( Демо )
$array = ["string|||mfasdfhadskjfahsldfhcadkasldhfaf", "apple|||2345hrquwfiqfh4fhlqwu4f", "orange|||0erjoerhtqothcro"];
var_export(preg_replace('~\|.*~', '', $array));
echo "\n----\n";
foreach ($array as &$value) { // modify by reference to overwrite the input array
$value = strstr($value, '|', true);
}
var_export($array);
Вывод:
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
----
array (
0 => 'string',
1 => 'apple',
2 => 'orange',
)
Или strstr()
без изменения по ссылке, вы можете объявить новый массив результатовнапример:
foreach ($array as $value) {
$result[] = strstr($value, '|', true);
}
ps Конечно, если ваши реальные данные требуют трех последовательных каналов, вы можете расширить мой символ needle еще два раза.