使用HTML实体转换数组和对象

时间:2016-01-31 22:32:07

标签: php arrays object html-entities

我正在尝试编写一段代码,它会递归地转换数组或对象中的每个字符串,以便在输入框中显示引号是安全的。

这是我写的一个数组,其中包含了我从其他人那里看过的部分。它适用于对象而不是数组,它似乎到达第二个数组,并输出一个字符串“null”

function fixQuotes($item)
{
    if (is_object($item)) {
        foreach (get_object_vars($item) as $property => $value) {
            //If item is an object, then run recursively
            if (is_array($value) || is_object($value)) {
                fixQuotes($value);
            } else {
                $item->$property = htmlentities($value, ENT_QUOTES);
            }
        }
        return $item;
    } elseif (is_array($item)) {
        foreach ($item as $property => $value) {
            //If item is an array, then run recursively
            if (is_array($value) || is_object($value)) {
                fixQuotes($value);
            } else {
                $item[$property] = htmlentities((string)$value, ENT_QUOTES);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果它是两个数组深,它没有保存数组,它现在正在工作,它也缺少数组上的返回。感谢您阅读。

以下是未来有人需要执行此操作的脚本的固定代码的副本。

function fixQuotes($item)
{
    if (is_object($item)) {
        foreach (get_object_vars($item) as $property => $value) {
            //If item is an object, then run recursively
            if (is_array($value) || is_object($value)) {
                $item->$property = fixQuotes($value);
            } else {
                $item->$property = htmlentities($value, ENT_QUOTES);
            }
        }
        return $item;
    } elseif (is_array($item)) {
        foreach ($item as $property => $value) {
            //If item is an array, then run recursively
            if (is_array($value) || is_object($value)) {
                $item[$property] = fixQuotes($value);
            } else {
                $item[$property] = htmlentities((string)$value, ENT_QUOTES);
            }
        }
        return $item;
    }
}