gpt4 book ai didi

PHP:如何对数组的数组执行 htmlspecialchar()?

转载 作者:IT王子 更新时间:2023-10-28 23:58:00 27 4
gpt4 key购买 nike

如何在数组对象数组上运行 PHP 函数 htmlspecialchars()

我有以下代码:

$result_set = Array
(
[0] => Array
(
[home_id] => 1
[address] => 4225 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 76798
)

[1] => Array
(
[home_id] => 8
[address] => 4229 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 75093
)
);

// this doesn't work since $result_set is an array of arrays and htmlspecialchars is expecting a string
htmlspecialchars($result_set, ENT_QUOTES, 'UTF-8'));

更新:

请注意,尽管下面有很多答案,但它们都不适用于数组的数组。以下答案仅适用于简单数组。

我已经尝试了以下方法,但它不起作用:

array_walk_recursive($result_set, "htmlspecialchars", array(ENT_QUOTES,'UTF-8'))

我收到以下错误:htmlspecialchars() expects parameter 2 to be long, string given


更新 2

当我尝试时:

function cleanOutput(&$value) {
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
print_r($result_set);
print('-------');
print_r(array_walk_recursive($result_set, "cleanOutput"));

我得到以下不需要的输出:

Array
(
[0] => Array
(
[home_id] => 1
[address] => 4225 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 76798
)
[1] => Array
(
[home_id] => 8
[address] => 4229 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 75093
)
)
-------1

更新 3

当我尝试时:

function cleanOutput(&$value) {
return htmlspecialchars($value, ENT_QUOTES, 'UTF-8');
}
$result_set = Array
(
[0] => Array
(
[home_id] => 1
[address] => 4225 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 76798
)

[1] => Array
(
[home_id] => 8
[address] => 4229 Nasmyth Dr
[city] => Plano
[state] => TX
[zip] => 75093
)
);

$cleanedOutput = array();
foreach ($result_set as $rs) {
$cleaned[] = array_map("cleanOutput", $rs);
}
print_r($cleanedOutput);

我得到以下不希望的结果:

{'homes' : []}

最佳答案

您可以使用 array_map()在每个条目上运行该方法。

$cleaned = array_map("htmlspecialchars", $myArray);

如果您需要将参数传递给 htmlspecialchars(),您可以将其替换为您自己的自定义函数:

function myFunc($a) {
return htmlspecialchars($a, ENT_QUOES);
}

$cleaned = array_map("myFunc", $myArray);

考虑到您处理的是一个数组数组,而不是一个字符串数组,您需要循环遍历外部数组才能找到您的字符串:

$cleaned = array();
foreach ($result_set as $rs) {
foreach ($rs as $r) {
$cleaned[] = array_map("htmlspecialchars", $r);
}
}

或者,您可以使用 array_walk_recursive():

array_walk_recursive($myArray, "htmlspecialchars");

请注意,此方法通过引用更改 $myArray 对象,因此无需将输出分配给新变量。

关于PHP:如何对数组的数组执行 htmlspecialchar()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002710/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com