2010-06-02 3 views
0

Недавно я написал JavaScript RegExp для очистки моих данных в интерфейсе, теперь мне нужно сделать то же самое для моего PHP-конца, но не работая в PHP некоторое время, беда. Ниже представлен JavaScript-код RegExp, может кто-то, пожалуйста, помогите мне преобразовать это в PHP?Строка PHP RegEx Замените

var illegalChars = /[\(\)\<\>\,\;\:\.\~\@\#\$\!\%\^\&\*\'\?\(\)\+\=\{\}\`\\\/\"\[\]]/gi; 
var siteSuggest = $(this).val().toUpperCase().split(' ').join('').replace(new RegExp(illegalChars), ""); 

Итак, в заключение, я хочу, чтобы удалить все недопустимые символы глобально, удалить пробелы & заглавной переменной как переменная будет использоваться для создания базы данных или таблицы в SQL.

+0

Я думаю, вам не нужно избегать * каждого символа, и у вас есть '()' два раза в вашем выражении. –

+0

Cheers Felix, я посмотрю на это – Mat

ответ

10

Честно говоря, я думаю, вам будет лучше определять хороших персонажей, а не пытаться найти всех плохих персонажей (в конце концов, есть много персонажей, отличных от ASCII, о которых вы забыли). Я хотел бы сделать что-то вроде:

$regex = '#[^a-z0-9_]#i'; 
$val = preg_replace($regex, '', $val); 
$val = strtoupper($val); 

Это регулярное выражение будет иметь допустимые символы, как все альфа, и цифры _. Если вам нужно больше, просто добавьте их в класс символов. Там нет необходимости разделить на пространстве, так как регулярное выражение будет соответствовать пространства (Символ^в начале класса символов является отрицанием) ...

Вы можете настроить JS как это:

var illegalChars = /[^a-z0-9_]/gi; 
var siteSuggest = $(this).val().replace(new RegExp(illegalChars), '').toUpperCase(); 
+1

+1 Белый список всегда лучше черного списка –

+0

+1, хотя вы можете просто использовать '\ W' или' [^ \ w] ';) – Matt

+0

Это. Кроме того, замените пробелом вместо ничего, или результат может выглядеть беспорядочным. – Sylverdrag

0
 

$illegal_chars = array(' ', ';', '~', '@', ...); 
strtoupper(str_replace($illegal_chars, '', $value)); 
 
Смежные вопросы