2013-02-21 4 views
-1

Я знаю, что на это много вопросов, но я не нашел никаких совпадений с моим вопросом. Я хочу, чтобы преобразовать это выражение в preg_replace:Как преобразовать сложную ereg_replace в preg_replace?

$a = ereg_replace('[-a-z0-9!#$%&\'*+/=?^_`{|}~][email protected]([.]?[a-zA-Z0-9_/-])*','', $a); 

до сих пор пытались те, но не работал:

$a = ereg_replace('/[-a-z0-9!#$%&\'*+/=?^_`{|}~][email protected]([.]?[a-zA-Z0-9_/-])*/','', $a); 
$a = ereg_replace('|[-a-z0-9!#$%&\'*+/=?^_`{|}~][email protected]([.]?[a-zA-Z0-9_/-])*|','', $a); 

Вот сообщение об ошибке для второй линии:

Warning: preg_replace(): Unknown modifier '}' in 
+0

Попробуйте 'preg_quote' вещи в вашем классе символов. –

+0

Во втором вы используете разделитель внутри шаблона без указания его (непосредственно перед '}') –

+1

Побег разделителя. Или используйте разделитель, который не встречается в вашем списке символов, например. '' °. Если все остальное не работает, 'preg_match (" \ 001 [....] \ 001 "' всегда является альтернативой. – mario

ответ

1

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

$a = ereg_replace('/[-a-z0-9!#$%&\'*+\/=?^_`{|}~][email protected]([.]?[a-zA-Z0-9_\/-])*/','', $a); 

Этот конкретный пример прост для чтения; Я найду персонажа, который не используется вообще.

Смежные вопросы