2011-08-09 55 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