2011-10-07 19 views
0

我想沿着逗號分割一個部分,除非它包含一個平行結構。PHP:沿着逗號分開一個句子,除了平行結構

例如,給定這些句子(http://owl.english.purdue.edu/owl/resource/623/01/):

瑪麗喜歡遠足,游泳,騎一輛自行車。

瑪麗喜歡徒步旅行,游泳和騎自行車。

我將這些分裂沿着第一個逗號只有這樣我會得到:

sentence_array ("Mary likes to hike", "swim, and ride a bicycle") 

也許有前瞻性的正則表達式,檢查至少2-3個空格不是逗號包圍?

+0

如果你試圖不分裂並行性,你不應該在技術上將它分開,因爲「加息」是該平行短語的一部分。 – jprofitt

回答

2

也許這樣的事情可以工作:

<?php 

$str = "Mary likes to hike, to swim, and to ride a bicycle, also, something more at the end."; 
var_dump($str); 

$str = preg_replace('/((\s\w*){3,},)/', '\1*', $str); 
$str = explode('*', $str); 

var_dump($str); 
?> 

它要在壽喜歡使用的東西不僅僅是一個*更獨特的工作

+0

謝謝,它的作品。 – giorgio79

0

我很難明白你究竟想要什麼? 會爆炸(',','瑪麗喜歡徒步旅行,游泳和騎自行車',2)工作嗎?因此在那裏2(限制) 或者是你想爆炸','?

+0

是的,我想用逗號分割,如果它們太接近,可以跳過下面的逗號分割,用2個字來說。 – giorgio79

+0

'2字以內'thingy要求正則表達式 – PalmTree

0

使用explode(separator,string,limit)

split (string $pattern , string $string [, int $limit = -1 ])

+0

經過測試,極限-1不包括爆炸數組的最後一項,但我想保留它。另外,如果距前一個逗號有一段距離,比如3-4個字,我只想用逗號分隔,否則我們有一個平行結構。 – giorgio79

+0

然後你可以使用爆炸(分隔符,字符串) –

+0

你能給我一個例子,你的輸入是什麼,你想作爲輸出? –