2009-11-13 83 views
0

我在分隔符中遇到爆炸問題。我有一個相當粗糙的字符串作爲分隔符,當我添加另一個字母(字的開頭)時,它似乎崩潰了,但是當我刪除第一個字母時,它不會被修復,這將表明它不是長度的。分隔符中出現爆炸故障

要機智的(工作)代碼:

$boom = htmlspecialchars("<td width=25 align=\"center\" "); 
$arr[1] = explode($boom, $arr[1]); 

滿弦,我想用的是<td width=25 align=\"center\" class=\",當我開始添加在class,爆炸發生故障,並沒有得到執行。只要我加入c就會發生這種情況,如果我刪除<,它就不會消失,如果它只是字符串長度的問題,它會消失。

基本上,這個問題並不可怕,因爲我可以用爆炸後的「」替換class=",並得到相同的結果,但這讓我很頭疼診斷,而且這似乎是一個非常奇怪的問題。對於它的價值,我在XAMPP 1.7.2中使用了PHP 5.3.0。

在此先感謝!

+0

寬度不需要引號? 2009-11-13 14:49:16

+0

是的,但我不是作者。該網站的代碼相當混亂,但我無能爲力。 – 2009-11-16 08:41:12

回答

0

你可以嘗試分隔符的每次發生轉換的原始字符串

"<td width=25 align=\"center\" "

的東西更容易管理,如:

「香蕉」

,然後爆炸在那個字上

+0

,但如果單元格包含單詞banana,它會意外爆炸該字符串。你必須做一些瘋狂的人物組合,也就是說,&)UIF $ _GD)NIF,但即使如此,在字符串 – Psytronic 2009-11-13 14:19:55

+0

中出現這種情況的機率(確實很小),你也許應該檢查看看替換的分隔符是否出現在原始字符串中,但很容易做到這一點,以及在情況下對替換分隔符進行輕微更改。 – 2009-11-13 14:23:04

+0

是的,我很確定沒有人在鞋類目錄網站上提到香蕉。 ;) 這是一個很好的建議,我可以在一行中做到這一點(再加上幾個除數)。 – 2009-11-13 14:47:27

0

您是否試過將htmlspecialchars添加到爆炸中。

$arr[1] = explode($boom, htmlspecialchars($arr[1]));

我得到意想不到的效果沒有它,但它它完美。

 
$s = '<td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td>'; 
$boom = htmlspecialchars("<td width=25 align=\"center\" class="); 
$sex = explode($boom, $s); 
print_r($sex); 

輸出:

 
Array 
(
    [0] => <td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td> 
) 

 
$s = '<td width=25 align="center" class="asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td>'; 
$boom = htmlspecialchars("<td width=25 align=\"center\" class="); 

$sex = explode($boom, htmlspecialchars($s)); 
print_r($sex); 

輸出

 
Array 
(
    [0] => 
    [1] => "asdjasd">sdadasd</td><td width=25 align="center" >asdasD</td> 

) 

這是因爲$熱潮htmlspecialchar編碼,<和>轉化爲& lt;和& gt,它無法在字符串中找到它,所以它只是返回整個字符串。

+0

是的,整個字符串是htmlspecialchars轉換。當我檢索數據時,我是在第一步做到的。起初,直接轉到頁面源代碼很方便,而不是顯示頁面,但後來我保留了它。事實上,字符串(minus類)完美地工作,這意味着html與它無關(尤其是因爲添加的char「c」不是html特殊字符)。 – 2009-11-13 14:51:26