繁体   English   中英

PHP htmlspecialchars错误

[英]PHP htmlspecialchars error

为什么会这样

$trader_details = array_walk($trader_details, 'htmlspecialchars');

给出这个错误?

Severity: Warning
Message: htmlspecialchars() expects parameter 2 to be long, string given

除了输入字符串之外,afaik htmlspecialchars只有可选参数吗? 这在codeigniter中运行

谢谢

传递给array_walk的回调函数需要第二个参数作为数组元素的键:

通常, funcname采用两个参数。 数组参数的值是第一个,键/索引的第二个。

但是htmlspecialchars期望第二个参数是引用样式(通常由整数类型的ENT_*常量之一指定)。

请尝试使用array_map 它只使用数组的值。

array_walk默认传递2个参数。 第一个是数组项值,第二个是数组项键。 它试图将数组键作为第二个参数传递给htmlspecialchars,它希望第二个参数是一个定义要使用的引用样式的整数。

http://uk.php.net/array_walk说:

funcname的
通常,funcname采用两个参数。 数组参数的值是第一个, 键/索引的第二个

你可能正在寻找aray_map 另请注意,htmlspecialchars()默认使用iso-8859-1作为编码。 如果您的输出是例如utf-8编码,则必须将该信息作为第三个参数传递给htmlspecialchars。 否则结果可能是错误的。
php 5.3:

$foo = array_map(
  function($x) { return htmlspecialchars($x, ENT_QUOTES, 'utf-8'); },
  $trader_details
);

我假设$ trader_details是一个字符串数组? htmlspecialchars ()的第二个参数是整数类型,用于要使用的特定quotestyle。

您可能想要使用array_map 如果$ trader_details是一个二维数组,请发布它,以便我们可以看到你想要做的事情。

array_walk将2个参数传递给您的方法(htmlspecialchars),第一个是当前数组元素的值,第二个是当前元素的

因此,如果

$trader_details = array('key' => 'value');

然后

$trader_details = array_walk($trader_details, 'htmlspecialchars');

电话

htmlspecialchars('value', 'key')

这是不正确的,htmlspecialchars要求第二个参数是一个整数 - int $ quote_style

我认为它不会做你想要的,即使它有效。

htmlspecialchars()函数不会修改字符串,只返回带有修改的新字符串。 数组遍历不会有任何影响。

错误很明显... array_walk的第二个参数是关于函数回调,而函数需要有2个参数。 第一个用于值,第二个用于键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM