2014-09-28 70 views
0

我有一些從數據庫中提取的表格數據。像,php分割字符串由<tr>

<tr><td>key1</td><td>pair1</td></tr> 
<tr><td>key2</td><td>pair2</td></tr> 
<tr><td>key3</td><td>pair3</td></tr> 
<tr><td>key4</td><td>pair4</td></tr> 

我想分割它們與<tr>(s),並希望數組中的行。 ex。

$arr = ("<td>key1</td><td>pair1</td>", 
"<td>key2</td><td>pair2</td>", 
"<td>key3</td><td>pair3</td>", 
"<td>key4</td><td>pair4</td>"); 

我聽說explode(',', $myString);,但它使用逗號saperated字符串。

注意:請不要建議DOM解析器

+0

嘗試[使preg_split(http://php.net/preg_split) – webeno 2014-09-28 20:49:25

+0

@webeno我在正則表達式弱請註明格局.. – 2014-09-28 20:52:53

+0

我太多,對不起,否則我會增加一條,作爲一個答案;) – webeno 2014-09-29 05:25:15

回答

4
$out = array_filter(explode('</tr>', str_replace('<tr>','',$input))); 
+0

這工作..謝謝 – 2014-09-29 20:28:06

+0

@ user3710243偉大的,小夥子,我可以幫助您 – Steve 2014-09-29 20:45:18

0

嘗試:

explode('<tr>', $myString); 

您可以用爆炸任何圖案中的每個字符串。

http://php.net/manual/en/function.explode.php

但是如果你

<tr> 

拆你仍然有

</tr> 

在你的數組作爲字符串。您也可以通過刪除每個數組字符串中的最後5個字符來刪除它們。

+0

問題在於它會排除分隔符,所以數組中不會有第一個''...... – webeno 2014-09-28 20:48:25

+1

您可以循環搜索所有數組項並將它們添加到開頭。 – derdida 2014-09-28 20:49:32

+0

但是期待陣列既沒有''也沒有''。刪除''將工作,但任何明確的解決方案? – 2014-09-28 20:49:38

0

你可以試試這個。

<?php 

$arr ='<tr><td>key1</td><td>pair1</td></tr> 
<tr><td>key2</td><td>pair2</td></tr> 
<tr><td>key3</td><td>pair3</td></tr> 
<tr><td>key4</td><td>pair4</td></tr>'; 
str_replace('<tr>','',$arr); 
$rows = explode('</tr>',$arr); 
print_r(array_filter($rows));// arry_filter is used to remove the last null node. 
?>