2016-07-13 100 views
0

使用php和正則表達式,我需要將一串數據拆分成符合以下要求的部分。php正則表達式空白忽略引號

  1. 拆分它在白色的空間
  2. 忽略引號內的空白。

例如:

  1. $字符串= 'TID:1212121'; - 應該只是返回一個單一的陣列「tid:1212121」

  2. $ string ='tid:1211 topic:ted title:「This Title」';應返回一個數組與 3件tid:1211,主題:特德和標題:「這個稱號」。

我環顧四周,但我的個人正則表達式功能是可怕的。另外我無法控制輸入,因此報價不會被轉義。該字符串將被引用爲上面或更長,例如$ string ='tid:1211 topic:ted title:「This Title」lid:332 fid:「another bit of text」';

謝謝!

+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