2012-02-28 5 views
4

Я хочу, чтобы символ евро € в этом регулярное выражение, но оно не придет черезсимвол евро в PHP ereg_replace

$val = ereg_replace($regex, "[^a-zA-Z0-9[:space:][:blank:]€+-]+", $_REQUEST[$var]); 
+1

EREG не поддерживает юникод изначально я думаю. Время использовать preg_replace, ereg_ * не рекомендуется использовать с зимы '74. – Evert

+0

Я уверен, что я делаю неправильно здесь $ val = preg_replace ([^ a-zA-Z0-9 [: пробел:] [: blank:] € + -] + "," ", $ _REQUEST [$ var]) – user1209203

+0

Отсутствует «прямо после preg_replace (а также разделители/как указано ниже @ M42). – Phius

ответ

1

В свой комментарий, вы забыли разделители, необходимые preg_replace:

$string = 'ab!:;c+12,.3 €def-x/'; 
$string = preg_replace('/[^a-zA-Z0-9\s€+-]+/', '', $string); 
echo $string,"\n"; 

выход:

abc+123 €def-x 
1

Убедитесь, что набор символов, используемый текстовый редактор/IDE является изо-8859-15 (если именно поэтому вы пытаетесь отобразить).

Если это UTF-8, вам придется сделать еще один заменить специально для него ( представлены на несколько байт, я думаю, что это не будет вписываться в [...] регулярных выражений блока а).

BTW, ereg_replace() был устарел в пользу preg_replace().

Плюс, почему у вас есть два параметра «регулярного выражения»? (Я полагаю, что $regex содержит регулярное выражение тоже?)

Предложение (непроверенные), если то, что вы хотите сделать, это удалить € + другие символы в вашем начальном регулярное выражение:

$val = preg_replace(
    array('/[^a-zA-Z0-9[:space:][:blank:]+\-]+/', '/€/'), 
    '', 
    $_REQUEST[$var] 
); 
+0

preg необходимо начинать и заканчивать тем же разделителем. – Evert

+0

EW, спасибо, исправлено. –

+0

Это заменит символ евро' € 'ничем – Toto

5

ли вы MBstring Установленная? Если да, попробуйте использовать функцию mb_ereg_replace(). Он будет поддерживать этот показатель (даже в UTF-8).

Редактировать: Также проверьте, включено ли mbregex. Некоторые хосты включают mbstring, но отключает mbregex (я не знаю почему).

+0

Ничего, я чему-то научился, спасибо. :) –

+0

Кажется, что не на – user1209203

+0

При попытке некоторых вариантов предложить вам просто исправлять ошибки в вашем регулярном выражении работал для меня здесь (используя preg_replace). – Phius

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