2016-02-01 29 views
1

是否有可能讓php爆炸工作在一個確切的單詞?例如,我要拆分的字符串:php在一個確切的詞爆炸

London Luton to Paris 

然而,PHP的爆炸會發現「到」第一次出現是在「盧頓」。此字符串也是可能的:

Paris to London Luton 

哪個會正確爆炸,因爲'to'首先出現。

理想情況下,我希望爆炸是不區分大小寫,我相信目前爆炸是。不過,我認爲RegEx可能是更好的方式。

+2

「但我認爲RegEx可能是更好的選擇。」正確 – PeeHaa

+3

是否有任何東西阻止你在爆炸函數中包含'to'前後的空格?像'explode('to',$ string)'。 – frz3993

+0

甚至可以添加frz3993評論:你可以在「to」之前和之後始終連接一個空格 –

回答

4

preg_split簡單的解決方案:

$words = preg_split("/\bto\b/iu", "London Luton to Paris"); 
var_dump($words); 

// the output: 
array (size=2) 
    0 => string 'London Luton ' (length=13) 
    1 => string ' Paris' (length=6) 
+0

只是一個內聯修飾符的替代方法:['〜(?i)\ bto \ b(?i-)'](https://regex101.com/r/wI3lR4/1) - 然而+1 :-) – Jan

+0

@ Jan,是的,在更復雜的情況下,內聯修飾符可以提供很好的靈活性 – RomanPerekhrest

0

如果你想使用'to'作爲分隔符,那麼你可以使用字符串代替' to '(這是to兩邊各有一個空格)爆炸。這種方式只有當to是一個完整的詞它被視爲一個分隔符時,to字母組合的大字不匹配。

但是,如果您需要不區分大小寫,regex可能是更好的解決方案。

preg_split('/\bto\b/i', 'London Luton to Paris'); 

分割使用to作爲分隔符,但只有當它是一個完整的詞(即圍繞着它僅匹配單詞邊界\b)的字符串。

i修飾符告訴regex引擎忽略該情況。

to分隔符旁邊的空格將以您獲得的作品返回。您可以trim()所有導致串

array_map('trim', preg_split('/\bto\b/i', 'Paris to London Luton'); 

,或者你可以將它們添加到regex

preg_split('/\s*\bto\b\s*/i', 'Paris to London Luton'); 

\s*部分空格字符(\s)零次或多次(*)相匹配。通過這種方式,字to被識別爲分隔符,即使它顯示爲字符串中的第一個或最後一個單詞以及圍繞它的空格。