2013-02-25 203 views
1

這是代碼,但explode()方法沒有將字符串中的數據從<tr>發生分割。讓我知道我在這種簡單的情況下做錯了什麼。在這種情況下如果不使用正則表達式更好。爆炸方法是不爆炸php中的字符串

編輯

它是工作在鍵盤codepad.org/K9ETKzUN,但瀏覽器不輸出的PHP代碼呈現。

<?php 

$tabledata = '<table width="90%" cellspacing="1" cellpadding="4" border="3" bgcolor="#f5f5f5"> 
<tbody> 

<tr> 
<th>No</th> 
<th>AnimalNo</th> 
<th>Name</th> 
<th colspan="1">Sub1</th> 
<th colspan="1">Sub2</th> 
<th colspan="1">Sub3</th> 
</tr> 

<tr> 
<th colspan="1"></th> 
<th colspan="1"></th> 
<th colspan="1"></th> 
<th colspan="1">Subpart1</th> 
<th colspan="1">Subpart2</th> 
<th colspan="1">Subpart3</th> 
</tr> 

<tr> 
<th colspan="1"></th> 
<th colspan="1"></th> 
<th colspan="1"></th> 
<td class="countcompfield">Max mark1</td> 
<td class="countcompfield">Max mark2</td> 
<td class="countcompfield">Max mark3</td> 
</tr> 



<tr> 
<td></td> 
<td>A1</td> 
<td>Name1</td> 
<td>34</td> 
<td>56</td> 
<td>67</td> 
</tr> 

<tr> 
<td></td> 
<td>B2</td> 
<td>Name2</td> 
<td>89</td> 
<td>76</td> 
<td>56</td> 
</tr> 

<tr> 
<td></td> 
<td>C1</td> 
<td>Name3</td> 
<td>34</td> 
<td>17</td> 
<td>23</td> 
</tr> 

</tbody> 
</table>'; 

$myarr = explode('<tr>',$tabledata); 

echo "<pre>"; 
print_r($myarr); 
+2

你*的輸出是什麼? – L0j1k 2013-02-25 11:42:16

+0

使用http://www.php.net/manual/en/book.dom.php來操縱HTML。忘記爆炸或正則表達式。 – 2013-02-25 11:42:37

+1

我剛剛測試過這段代碼,它工作。注意'explode()'會從結果中刪除''。 – Naryl 2013-02-25 11:42:44

回答

1

它的工作... 運行該腳本並查看源代碼。

右鍵單擊 - >查看源代碼

+0

......非常感謝..其他:) +1 – Trialcoder 2013-02-25 11:51:15

1

該代碼發佈作品。您遇到的問題是您在瀏覽器中將結果視爲網頁,導致除最後一個元素之外的所有元素都保持隱藏狀態。如果您在瀏覽器中查看>來源,您會看到預期的和正確的結果。

HTML解析的一個更好的選擇是本機DOMDocument

它在鍵盤codepad.org/K9ETKzUN工作,但在瀏覽器中運行它不會

這是因爲鍵盤不復制瀏覽器,在鍵盤輸出文字文本。 HTML標籤不會被解釋爲它們在網頁上。

+0

是的,你是非常正確的,我剛剛檢查和其thr .. + 1 – Trialcoder 2013-02-25 11:50:53

1

你如何斷定它不會爆炸?也許通過在瀏覽器中查看print_r的輸出,實際上你會發現錯誤。無論你做了什麼工作都是正確的。將print_r($ myarr)替換爲var_dump($ myarr),你會明白我的意思。

瀏覽器只是最終將表格渲染到一起:)

+0

我var傾倒和它的thr +1 – Trialcoder 2013-02-25 11:51:30