2016-07-13 2 views
0

Используя php и регулярное выражение, мне нужно разделить строку данных на куски со следующими требованиями.php regex white space игнорировать цитаты

  1. Сплит его на белом пространстве
  2. Игнорировать пробелы в кавычки.

Например:

  1. $ строка = 'TID: 1212121'; - должен просто вернуть один массив с «tid: 1212121»

  2. $ string = 'tid: 1211 topic: ted title: «This Title»'; должен вернуть массив с 3 штуки tid: 1211, тема: ted и название: «This Title».

Я осмотрелся, но мои личные возможности регулярного выражения ужасны. Также я не могу управлять вводом, поэтому кавычки не будут экранированы. Строка будет указана выше или выше, например $ string = 'tid: 1211 topic: ted title: Крышка «This Title»: 332 fid: «еще один бит текста»;

Спасибо!

+0

Я не вижу никаких пробелов в '$ строка = 'TID : 1212121' , '. Вы пытаетесь разобрать файлы PHP? – chris85

+0

Извините за поздний ответ. Не php-файлы, просто ввод. Он должен разбираться в обоих. Поэтому иногда на входе есть пробел, а иногда ввод только по значению. – ASmithJackson

ответ

0

Если каждый цитируемый предшествует не являющимися символами пробела это может помочь вам:

preg_match_all('/([^ ]*("[^"]*")[\s])|([^ ]+[\s])/', $string, $matches); 

Вы можете увидеть в действии: phpliveregex и выбор preg_match_all

+0

Спасибо за это. – ASmithJackson

+0

Я тестировал это с меньшими значениями, и он не работает. Я посмотрю, что еще я могу придумать. Я пробовал 'pid: 354 название: joe' – ASmithJackson