2016-10-31 95 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