2016-10-31 37 views
-1

当我使用htmlentities()对变量进行编码时,它的工作原理与魅力类似,但如果我对数组做同样的事情,它只会返回一个空数组。我试图使用array_map()但它是一样的故事。我试图将编码切换到ISO-8859-1UTF-8,但没有成功。它不想工作。htmlentities()在与数组一起使用时返回空字符串

下面的代码:

<html> 
<head> 
    <title>Signup</title> 
</head> 
<body> 
    <form name="signup" method="POST" action="form.php"> 
    <fieldset> 
    <legend><p style="color:red; font-size:16px">Sports</p></legend> 
    <ul> 
    <li> 
     <input type="checkbox" name="sports[]" value="soccer"> 
     <label for="soccer">Soccer</label> 
    </li> 
    <li> 
     <input type="checkbox" name="sports[]" value="water_polo"> 
     <label for="water_polo">Water polo</label> 
    </li> 
    <li> 
     <input type="checkbox" name="sports[]" value="tennis"> 
     <label for="tennis">Tennis</label> 
    </li> 
    <li> 
     <input type="checkbox" name="sports[]" value="volleyball"> 
     <label for="volleyball">Volleyball</label> 
    </li> 
    </ul> 
    </fieldset> 
    </form> 
    <?php 
    $sports = htmlentities($_POST["sports"], ENT_COMPAT, 'ISO-8859-15'); 

    $count = count($sports); 
    if($count == 0) { 
     echo "You don't play any sports.<br>"; 
    } else { 
     echo "You like playing: "; 
     foreach($sports as $s) { 
      if(--$count == 0) { 
        echo "<span style='color:red'>$s</span>.<br>"; 
        break; 
      } else { 
        echo "<span style='color:red'>$s</span>, "; 
      } 
     } 
    } 
    ?> 
</body> 
</html> 

它产生以下输出:

You don't play any sports.

含义ヶ辆()是不是能够编码我的数组。

+2

表单/输入是什么样的?以及你如何使用'array_map()'? –

+0

['htmlentities()'](http://php.net/manual/de/function.htmlentities.php)不接受数组。 – simon

+0

@simon我怀疑OP是否理解德语;-)引用PHP.net时使用英文链接http://php.net/manual/en/function.htmlentities.php –

回答

1

我不知道你是如何使用array_map试过,但下面是一个正确的做法:

function sanitize($arg) { 
    if (is_array($arg)) { 
     return array_map('sanitize', $arg); 
    } 

    return htmlentities($arg, ENT_QUOTES, 'UTF-8'); 
} 
$array = array_map('sanitize', $_POST); 

此使用递归所以它也将与多维数组。

+0

这就是我使用'array_map()':'$ array = array_map(“htmlentities”,$ _POST [“array”],ENT_COMPAT,'ISO-8859-15')' – sgrontflix

+0

@sgrontflix这不是我如何使用它...如果你想传递参数阅读[这个评论](http://php.net/manual/en/function.array-map.php#84632)。 –

+1

我再次阅读'array_map()'手册,并意识到我是一个完全白痴哈哈...非常感谢你的干净的功能,现在我明白了一切:) – sgrontflix