我在尋找的東西的行爲就像爆炸,但使用一個以上的字符串分隔符,即如何分割一個字符串與多個分隔符跟隨或不是由空白(混合)?
+ - (
都可能是分隔符。
例如, 「爆炸」 下面的字符串後:
$string = 'We are 3+4-8 - (the + champions'
我應該得到這個爲$字符串[0]:
['We are 3+4-8']
是否有充當這樣的任何功能?
我在尋找的東西的行爲就像爆炸,但使用一個以上的字符串分隔符,即如何分割一個字符串與多個分隔符跟隨或不是由空白(混合)?
+ - (
都可能是分隔符。
例如, 「爆炸」 下面的字符串後:
$string = 'We are 3+4-8 - (the + champions'
我應該得到這個爲$字符串[0]:
['We are 3+4-8']
是否有充當這樣的任何功能?
$string = 'We are - (the + champions';
$words = preg_split('@[\W][email protected]', $string)
有了這個,你獲得[我們,是的,冠軍]
$string = 'We are - (the + champions';
$words = preg_split('/[\+\-\(]/', $string)
有了這個,你保留空格獲得[ '我們', '', '中', '冠軍'] ;這將是必要的修剪。
$string = 'We are 3+4-8 - (the + champions';
$words = preg_split('/[\+\-] |[\(]/', $string)
這樣,最後,你獲得[ '我們是3 + 4 + 8', '該', '冠軍'。在這種情況下修剪不是必要的。
這是不正確的,你需要保留空白。 – 2011-07-09 01:08:06
不,'我們'必須是字符串的第一個分割,我不需要單個單詞到第一個數組中,而是在分隔符之前的每個單詞。 – smepie
改變像我想象的你想 –
這將通過兩種-
,+
用字符類分割你的字符串,或(
$result = preg_split(/[ \- ]|[ \+ ]|[(]/im, $string);
$i = 0;
foreach ($result as $match){
$result[$i] = trim($match);
}
你有模式與字符串混合......並且,它不會返回海報示例中給出的相同數組,它會返回與爆炸相同的內容,除非數組中有額外的空元素。 – 2011-07-09 00:59:25
這仍然沒有給出正確的輸出。 – 2011-07-09 01:06:38
使用preg_split()
。
$chars = '+-(';
$regexp = '/[' . preg_quote($chars, '/') . ']/';
$parts = preg_split($regexp, $string);
忘了補充一點,如果你想解析表達式,如搜索查詢,preg_split()
將不會削減它,你會需要一個完全成熟的解析器。我認爲Zend框架中必須有一個。
如何:
$str = 'We are 3+4-8 - (the + champions';
$res = preg_split('/\s+[+(-]\s+/', $str);
print_r($res);
輸出:
[0] => We are 3+4-8
[1] => (the
[2] => champions
你想正是考慮分離器什麼字符
?和空間? –
你應該試着更好地說出你的問題,如果你在描述你的問題方面做得很好,你應該得到更好更快的答案。 – albertein
使用下面的答案之一,只需訪問結果數組中的第一個元素,如$ result [0] – albertein