2011-08-09 84 views
0

字符串這是文件中的示例行我處理:PHP的正則表達式匹配管道分隔文本

2011-08-08|M|Misc Info|6PM|Away vs. First Words, Second String, Third|Other Info 

我想之間的「離開與」讓一切和下一個「|」

+1

文件是否總是採用相似的格式?另外,如何以這種格式處理丟失的數據? – RageD

+2

到目前爲止你使用的是什麼正則表達式?到目前爲止你的代碼是什麼?你跑哪個問題?或者你只是要求代碼? – hakre

+0

看起來像管道分隔,而不是管道分隔。你是什​​麼意思? '| a | b | c |'如果用管道分隔,則有三個字段,如果用管道分隔,則有五個字段。 – tchrist

回答

1

只需使用PHP的爆炸函數來創建一個數組。

$str = "2011-08-08|M|Misc Info|6PM|Away vs. First Words, Second String, Third|Other Info"; 
$arr = explode($str, '|'); 


$parts = $arr[4]; 
$newArr = explode($parts, ','); 
+0

如果他正在處理大量數據,則分解可能不會很好。此外,這會給他幾個不必要的數組 - 他只需要從他的格式中提取一個字符串。 – RageD

1
$string = '2011-08-08|M|Misc Info|6PM|Away vs. First Words, Second String, Third|Other Info'; 
$parts = explode('|', $string); 
echo $parts[4]; // This is what you are looking for. 

我不明白你爲什麼會在這裏使用正則表達式。

如果你正在使用PHP 5.3還有另一種解決方案:

$parts = str_getcsv($string, '|'); 
echo $parts[4]; // This should be the part you're looking for 

str_getcsv也明白封閉的字符串,使其更加強勁。

+0

我曾嘗試過一些做過strpos()的事情,直到它到達正確的管道,但是測試表明它比這個解決方案慢得多。 +1。 – Jonah