2010-05-03 3 views
0

мне нужно сделать preg_replace для точной противоположности этого preg_match регулярного выражения:preg_replace, полная противоположность preg_match

preg_match('#^(\w+/){0,2}\w+\.\w+$#', $string); 

Так мне нужно, чтобы заменить все строки, которые не являются допустимыми с пустой строкой ->''

Так что нужно удалить первый / и последний / если он найден, и все недействительные символы, то есть только действительные символы A-Z, a-z, 0-9, _, . и / (если это не первый или последний символ строки).

Как это сделать с помощью preg_replace?

Спасибо :)

ответ

0
preg_replace('#^/|/$|[^A-Za-z0-9_./]#D', '', $subject); 
+0

Это 'A-z' должен быть' A-Z'? Просто интересно и спасибо :) – SoLoGHoST

+0

Да, это была опечатка. D обращается к регистру, где строка заканчивается на/\ n (слэш, затем строка новой строки). Это/удаляется без D и разрешено с ним. Это означает PCRE_DOLLAR_ENDONLY (http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php) –

+0

Хорошо, я не могу иметь/в конце строки, поэтому я бы не хотел, t использовать это 'D' правильно? Еще раз спасибо. – SoLoGHoST