Фильтр PHP с preg_replace допускает только буквы
У меня есть небольшая проблема с preg_replace. Мне нужна функция, которая преобразует все символы в ничто, кроме [Az][0-9]
и некоторых . !?
. !?
Я мог бы сделать preg_match
, но это только проверить, и я хочу, чтобы меня заменили. Это для того, чтобы не помещать ненужные символы, такие как <p>
и ;[[;[p;[
в описании META TAG.
Таким образом, сценарий должен выглядеть следующим образом:
;")<br>kk23?! => brkk23?!
Любая помощь будет оценена: D
Ответы
Ответ 1
$string = ';")<br>kk23?!';
$new_string = preg_replace("/[^A-Za-z0-9?!]/",'',$string);
echo $new_string;
leave- буквы, цифры, пробелы,?!
/* 3 choices. Pick one you like! */
$str = preg_replace("/[^A-Za-z0-9?! ]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?!\s]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?![:space:]]/","",$str);
Ответ 2
$var=preg_replace('~[^A-Za-z0-9?.!]~','',$var);
Не забывайте, что A-Za-z
и Az
не одинаковы
Ответ 3
Быстрое решение будет следующим:
if (preg_match('/^[\w\.]+$/', $str)) {
echo 'Str is valid';
} else
echo 'Str is invalid';
//строка содержит только от a до z, от A до Z, от 0 до 9 и _ (подчеркивание)
\w - matches [a-zA-Z0-9_]+
Надеюсь, поможет.
Ответ 4
Самый простой способ - просто сделать что-то похожее: просто добавьте персонажей после !
, обязательно избегайте их, если это необходимо.
$string = "<br>kk23?!";
$string = preg_replace('/[^A-Za-z0-9 \?!]/', '', $string);
Ответ 5
Подробнее посетите эту страницу. Я думаю, что больше людей сталкиваются с той же проблемой. Лучше всего попробовать себя и получить то, что вам нужно. Настройте свою или скопируйте этот php и попробуйте:
$sample_input = '&&*9?><<script>}cat-<html>ch(_P.,,mE.:;xc##e*p32t.ion $e){di+-($e->ge69tMesPHP _f0sage()3);}';
$output = ereg_replace("[^..........]", "", $sample_input);
echo "validate =".$output;
измените, заполнив это, чтобы получить то, что вы хотите:
$output = ereg_replace("[^.........]", "", $sample_input);
Пример: если вы хотите только нижний регистр, выполните следующие действия:
$output = ereg_replace("[^a-z]", $sample_input);
нижний регистр с пробелом:
$output = ereg_replace("[^a-z ]", $sample_input);
и многое другое....., Это простой метод проверки:
$username = ereg_replace("[^A-Z0-9_]", "", $username);
$fullname = ereg_replace("[^A-Za-z0-9., ]", "", $fullname);
$city = ereg_replace("[^A-Za-z -]", "", $city);
$phone = ereg_replace("[^0-9 +()-]", "", $phone);
$state = ereg_replace("[^A-Za-z -]", "", $state);
$zipcode = ereg_replace("[^0-9]", "", $zipcode);
$country = ereg_replace("[^A-Za-z -]", "", $country);
$gender = ereg_replace("[^mf]", "", $gender);
Попробуйте сами, надеюсь, поможет...