PHP Функция - Ошибка передачи поля формы в качестве параметра - PullRequest
0 голосов
/ 04 августа 2020

Я создал следующую функцию для удаления веб-адресов из представленных полей формы. Я сделал это в качестве меры предотвращения спама.

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

Я пытаюсь сослаться на функцию при обработке моей формы: $ _POST ['first'] = scrubURL ($ _ POST ['first']);

Я получаю сообщение об ошибке: Undefined index: http: // somewebsite.com

Почему-то он передает значение из формы, а не само поле. Я попытался заключить поле в кавычки, scrubURL ("$ _ POST ['first']") и получил сообщение об ошибке: синтаксическая ошибка, неожиданный "первый" (T_STRING), ожидание ',' или ')'

Я не вижу причины, так как я успешно обработал другую форму. Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Аргумент вашей функции $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']);
0 голосов
/ 04 августа 2020

Из вашего кода кажется, что вам просто нужно передать «first» в качестве параметра:

$result = scrubURL('first');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...