簡體   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