PHP 函数 - 将表单字段作为参数传递时出错

PHP Function - Error Passing Form Field as Parameter

我创建了以下函数来从提交的表单字段中删除网址。我这样做是为了防止垃圾邮件。

<?PHP
function scrubURL($field)
{
    return preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*    (\?\S+)?)?)*)(?:[?&]\S+=\S*)*@i', '', $_POST[$field]);
}
?>

我尝试在表单处理中引用函数: $_POST['first'] = scrubURL($_POST['first']);

我收到错误:未定义的索引:http:// somewebsite.com

不知何故,它从表单而不是字段本身传递值。我尝试用引号将字段括起来,scrubURL("$_POST['first']") 并收到错误:语法错误,意外 'first' (T_STRING),期待 ',' 或 ' )'

我看不出原因,因为我在另一个表格上瘦身成功了。我做错了什么?

从你的代码来看,你似乎只需要传递“first”作为参数:

$result = scrubURL('first');

您的函数参数 $field 包含 $_POST['first'] 的值!您在示例中想要的是一个像

这样的函数调用
$_POST['first'] = scrubURL('first');

作为建议:我不会在您的函数中访问 $_POST。这是更清晰的代码。 ;)

function scrubURL($dirtyUrl)
{
    return preg_replace('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*    (\?\S+)?)?)*)(?:[?&]\S+=\S*)*@i', '', $dirtyUrl);
}

$_POST['first'] = scrubURL($_POST['first']);