如何修复 stripslashes() 在使用数组时期望参数 1 为字符串

How to fix stripslashes() expects parameter 1 to be string when also using array

我有一个 php 表单可以将值传递给电子邮件。该表单具有单个值和数组。我收到以下错误,我无法修复它。

警告:stripslashes() 要求参数 1 为字符串,/home/...... 第 147 行中给出的数组

如果尝试添加

if(is_array$cleanvalue = stripslashes($value);

第147行如下:

#clean fields for repost or display
foreach ($_POST as $key=>$value) {
$cleanvalue = stripslashes($value);
$repostvalue = stripquotes($cleanvalue);
$hiddenhtml .= "<input type=\"hidden\" name=\"$key\" 
value=\"$repostvalue\">\n";
${$key} = $cleanvalue;
}

提交表格后,我收到以下错误,但直到填写完整个表格后才出现。 警告:stripslashes() 期望参数 1 为字符串,/home/...... 第 147 行中给出的数组

您可以尝试对每个值使用 is_array() 和映射 stripslashes(),如果它是:

foreach ($_POST as $key=>$value) {
    if (is_array($value)) {
        ${key} = array_map('stripslashes', $value);
    } else {
        $cleanvalue = stripslashes($value);
    } 

    $repostvalue = stripquotes($cleanvalue);
    $hiddenhtml .= "<input type=\"hidden\" name=\"$key\" value=\"$repostvalue\">\n";
    ${$key} = $cleanvalue;
}

貌似stripquotes()可能是自定义函数?您需要对其进行类似的修改。如果你想再次在 html 中输出它们,你将需要以不同的方式循环你的值,可能是这样的:

foreach ($_POST as $key=>$value) {
    if (is_array($value)) {
        ${key} = array_map('stripslashes', $value);
    } else {
        $cleanvalue = stripslashes($value);
    } 

    $repostvalue = stripquotes($cleanvalue);

    if (is_array($value))
    {
        foreach($repostvalue as $repost) {
            $hiddenhtml .= "<input type=\"hidden\" name=\"$key[]\" value=\"$repost\">\n";
        }

    } else {
        $hiddenhtml .= "<input type=\"hidden\" name=\"$key\" value=\"$repostvalue\">\n";
    }

    ${$key} = $cleanvalue;
}