在分隔符中爆炸出现故障

时间:2009-11-13 12:18:35

标签: php explode

我遇到爆炸分隔符问题。我有一个相当粗糙的字符串作为分隔符,当我添加另一个字母(一个单词的开头)时它似乎崩溃了,但是当我删除第一个字母时它没有得到修复,这表明它不是关于lenght

即,(工作)代码是:

$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。

提前致谢!

2 个答案:

答案 0 :(得分: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>

)

这是因为$ boom是htmlspecialchar编码的,&lt;和&gt;变成&amp; lt;和&amp; gt;,它无法在字符串中找到它,因此它只返回整个字符串。

答案 1 :(得分:0)

您可以尝试转换原始字符串

中每个分隔符的出现位置

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

更易于管理的内容,如:

  

“香蕉”

然后在那个词上爆炸