Как разбить строку по нескольким разделителям в PHP? - PullRequest
24 голосов
/ 21 сентября 2009

"something here ; and there, oh,that's all!"

Я хочу разделить его на ; и ,

поэтому после обработки должно получиться:

something here

and there

oh

that's all!

Ответы [ 4 ]

35 голосов
/ 21 сентября 2009
<code><?php

$pattern = '/[;,]/';

$string = "something here ; and there, oh,that's all!";

echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '
';

Обновленный ответ на обновленный вопрос:

<code><?php

$pattern = '/[\x{ff0c},]/u';

//$string = "something here ; and there, oh,that's all!";
$string = 'hei,nihao,a ';


echo '<pre>', print_r( preg_split( $pattern, $string ), 1 ), '
';
9 голосов
/ 21 сентября 2009
$result_array = preg_split( "/[;,]/", $starting_string );
1 голос
/ 21 сентября 2009

Функция PHP split () позволяет разделителю быть регулярным выражением. К сожалению, это устарело и будет удалено в PHP7!

Функция preg_split () должна быть в порядке, и она возвращает массив:

$results = preg_split('/[;,]/', $string);

Есть несколько дополнительных параметров, которые могут быть вам полезны.

Является ли первый символ разделителя в вашем отредактированном примере фактически 2-байтовым символом Юникода?

Возможно, функция preg_slit () обрабатывает разделитель как три символа и разделяет символы юникода (китайский?) На «символ»

0 голосов
/ 21 сентября 2009

Вы можете получить значения в массив, используя метод Девина или Метер .

Чтобы получить желаемый результат, вы, вероятно, могли бы сделать это

echo implode("\n", $resultingArray);

Или используйте <br />, если хотите HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...