【问题标题】:explode glitch in delimiter分隔符中的爆炸故障
【发布时间】:2009-11-13 12:18:35
【问题描述】:

我在使用爆炸的分隔符时遇到了一些问题。我有一个相当粗的字符串作为分隔符,当我添加另一个字母(单词的开头)时它似乎分解了,但是当我删除第一个字母时它没有得到修复,这表明它与长度无关.

也就是说,(工作的)代码是:

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

我想使用的完整字符串是&lt;td width=25 align=\"center\" class=\",当我开始添加class 时,explode 崩溃了,什么也没做。只要我添加c,就会发生这种情况,如果我删除&lt;,它不会消失,如果它只是字符串长度的问题。

基本上,问题并不严重,因为我可以在爆炸后将class=" 替换为“”,并获得相同的结果,但这让我很难诊断,而且这似乎是一个非常奇怪的问题.对于它的价值,我在 XAMPP 1.7.2 中使用 PHP 5.3.0。

提前致谢!

【问题讨论】:

  • 宽度也不需要引号吗?
  • 是的,但我不是作者。该网站的代码非常混乱,但我无能为力。

标签: php explode


【解决方案1】:

您可以尝试转换原始字符串中每个出现的分隔符

"&lt;td width=25 align=\"center\" "

以更易于管理的方式,例如:

“香蕉”

然后在那个词上爆炸

【讨论】:

  • 但是如果单元格包含单词banana,它也会意外地在该字符串上爆炸。你必须做一些疯狂的字符组合,即 &)UQ£$_GD)NIF 但即便如此,字符串中出现这种情况的可能性(诚然非常小)
  • 你是对的,他可能还应该检查原始字符串中是否存在被替换的分隔符,但这样做很容易,以防万一,对替换分隔符稍作更改.
  • 是的,我很确定没有人在鞋类目录网站上提到香蕉。 ;) 这是一个很好的建议,我可以在一行中完成(加上几个分隔符)。
  • ...除非他们以特定的黄色出售鞋子。 ;)
【解决方案2】:

您是否尝试将 htmlspecialchars 添加到爆炸中。

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

没有它我会得到意想不到的结果,但有了它它就可以完美地工作。

$s = 'sdadasd asdasD'; $boom = htmlspecialchars("sdadasd asdasD )

$s = 'sdadasd asdasD'; $boom = htmlspecialchars("sdadasd asdasD )

这是因为 $boom 是 htmlspecialchar 编码的, 被转换为 <和 >,它在字符串中找不到 ,所以它只返回整个字符串。

【讨论】:

  • 是的,整个字符串都是经过htmlspecialchars转换的。当我检索数据时,我在第一步中做到了。一开始直接进入页面源很方便,而不是显示页面,但后来我保留了它。事实上,字符串(减去类)工作得很好,这意味着 html 与它无关(特别是因为添加的 char "c" 不是 html 特殊字符)。
猜你喜欢
相关资源
最近更新 更多
热门标签