разделитель preg с двумя разделителями в PHP
Как объединить два разделителя в preg_split
? Например:
$str = "this is a test , and more";
$array = preg_split('/( |,)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($array);
Создаст массив в виде
Array
(
[0] => this
[1] =>
[2] => is
[3] =>
[4] => a
[5] =>
[6] => test
[7] =>
[8] =>
[9] => ,
[10] =>
[11] =>
[12] => and
[13] =>
[14] => more
)
Но я хочу получить
Array
(
[0] => this
[1] =>
[2] => is
[3] =>
[4] => a
[5] =>
[6] => test
[7] => ,
[8] => and
[9] =>
[10] => more
)
На самом деле, я хочу объединить элементы массива, когда два разделителя являются соседними. Другими словами, игнорирование первого разделителя, если следующая часть является вторым разделителем.
5
3 answers
Попробуйте использовать класс символов: /[ ,]+/
+
является квантором, означающим "1 или более"
3
Author: Niet the Dark Absol, 2012-12-19 00:45:46
Как насчет того, чтобы убедиться, что ситуация не произойдет в первую очередь:
<?php
$str = "this is a test , and more";
$str=preg_replace('/ *, */',',',$str);
$array = preg_split('/( |,)/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
print_r($array);
?>
Array
(
[0] => this
[1] =>
[2] => is
[3] =>
[4] => a
[5] =>
[6] => test
[7] => ,
[8] => and
[9] =>
[10] => more
)
2
Author: Josay, 2012-12-19 00:53:52
С помощью /([, ]+)/
это работает. Видишь кодовый контроллер
1
Author: Shiplu Mokaddim, 2012-12-19 01:08:04