php preg_split или взорваться.Не удаляя персонажа - PullRequest
0 голосов
/ 25 ноября 2018

Я пробовал несколько способов решить свою проблему и нашел плохой способ обхода, но я хотел бы знать, есть ли что-то еще там.У меня есть строка из нескольких подстрок, разделенных запятыми.Я могу разделить это на массив, используя preg_split или explode.НО некоторые подстроки также содержат запятые, которые я не хочу разбивать на отдельные элементы массива.Моя работа заключается в том, чтобы включить точку остановки в конце каждой строки, а затем дать команду Explode разбивать только на ".,".Пример строки:

$string = "Henry the horse, Billy the donkey, Harry the mule, George, the hippo";

Обходное решение

$string = "Henry the horse., Billy the donkey., Harry the mule., George, the hippo.";
$list = explode('.,',$string);

Я не могу придумать, как сказать программе, что запятая после Джорджа не является концомподстроки.Другая (связанная) проблема заключается в том, что я хотел бы разбить строку на запятые, НО включать запятые в члены массива.

==> Henry the horse,
==> Billy the donkey,
==> Harry the mule,
==> George, the hippo,

Моя идея состоит в том, чтобы просто добавить их снова после.Есть ли более простой способ?Другими словами, существует ли способ разделения на разделитель, НО с сохранением разделителя в элементах массива?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Я предполагаю, что каждая подстрока должна начинаться с заглавной буквы.Тогда это будет сделано:

$string = "Henry the horse, Billy the donkey, Harry the mule, George, the hippo";

preg_match_all("~[A-Z].*?(?:$|,)(?!\s*[a-z])~", $string, $result);

$result[0] будет содержать следующий вывод:

[
    "Henry the horse,"
    "Billy the donkey,"
    "Harry the mule,"
    "George, the hippo"
]
0 голосов
/ 25 ноября 2018

Вы можете использовать lookarounds или (*SKIP)(*FAIL).Либо usw ,(?! the) или , the(*SKIP)(*FAIL)|, с preg_split().

Нажав на мой мобильный

...