У меня проблемы с этим.
У меня есть такие данные, как:
$ data = "Alpha Natural Resources Inc COM 02076X102 2,077 45,700 x
Я хочу «взорвать» эту строку там, где есть более одного места. Проблема, с которой я столкнулся, заключается в том, что я нашел решения, которые взорвали линию, где есть одно место или больше. Я ищу, чтобы взорвать эту линию, где имеется более одного пространства, но не только одно пространство (так что Alpha Natural Resources Inc остается вместе, например).
Я знаю, что ответ найден в preg_split, но я не могу понять правильный код.
благодаря
preg_split('/\s\s+/', $data)
то время как это соответствует кратным любым пробелам, таким как return, tab и т. д. preg_split('/ +/', $data)
будет соответствовать только пробелу из пробела. \ s выбирает любые пробелы. Удаление нескольких пробелов
Это старый пост, но я полагаю, что добавлю для полноты.
$arr = preg_split('/[\s][\s]{1,3}/', $string,-1,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
У этого есть намного больше возможностей для работы. Помните, что внутри скобок вы настраиваете точное количество пробелов для поиска …
/ [\ С] [\ s] {1,4} /
или просто один или несколько раз после первого совпадения / [\ s] [\ s] + / Также известно, что для этого есть флаги, чтобы облегчить обработку вывода.
PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
Один заставляет его не возвращать пустые результаты, а другой содержит согласованный контент в возвращаемом контенте.
Есть и другие ( http://php.net/preg-split ), которые фиксируют смещение, но немного меняют структуру вывода.
//////////////////// ОБНОВИТЬ ////////////////
Я закончил тем, что использовал
/ (\ W + \ W +) /
// сопоставляет слова и берет их, а белые пробелы возвращаются.
По какой-то причине preg_split не заменит пробелы.
Его незнакомец для меня, потому что он работал в один момент времени, тогда он не после некоторых изменений. Вернулся к тому, когда он работал, и он работал на моей тестовой странице и моей живой. Начал добавлять исправления, чтобы справиться с проблемой стрельбы и bam, и не возвращать пробел в результатах. Так что это сработало для меня очень просто и просто
Это должно работать:
preg_split('/ +/', $data)