Редактировать: Хорошо, я не могу прочитать, спасибо Col. Shrapnel за помощь. Если кто-то приходит сюда в поисках того же, чтобы ответить ... print_r(preg_split('/([\!|\?|\.|\!\?])/', $string, null, PREG_SPLIT_DELIM_CAPTURE));
Сохранять разделители при разделении строки
Есть ли способ, чтобы разбить строку на множестве разделителей, и сохранить позицию и характер (ы) разделителя после раскола ?
Например, с помощью разделителей !
?
.
!?
поворота это:
$string = 'Hello. A question? How strange! Maybe even surreal!? Who knows.';
в этом
array('Hello', '.', 'A question', '?', 'How strange', '!', 'Maybe even surreal', '!?', 'Who knows', '.');
В настоящее время я пытаюсь использовать print_r(preg_split('/([\!|\?|\.|\!\?])/', $string));
захватить разделители как подмаски, но Мне не повезло.
Почему бы не прочитать страницу руководства по функциям? может быть, может быть ответ? хотя для обнаружения разделителей в качестве подшаблона вы можете использовать preg_match_all. но раскол - это самое лучшее. просто сделайте привычку ссылаться на страницу руководства сначала –
Erp. Просто вернусь через страницу, и теперь я учу оптиков для набора очков:/Я ослеп. Спасибо, что заставило меня снова взглянуть на это: P – JoeC
Обратите внимание, что вы используете класс символов. '[\! \ \? \ \. \ \! \?]' означает ony символов '!', '|', '?' и '.'. Вероятно, вы хотите: '(! | \? | \. |! \?)'. Или с классом символов: '([?.] |! \ ??)'. – Gumbo