Фильтр 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);

Попробуйте сами, надеюсь, поможет...