2012-04-15 4 views
1
$string = 'ab!:;c+12,.3 €def-x/'; 
$string = preg_replace('/[^a-zA-Z0-9\s€+-]+/', '', $string); 
$val=htmlentities($string, ENT_NOQUOTES,); 
echo $string,"\n"; 

Echosсимвол PHP евро htmlentities

abc+123 �def-x 

И не

abc+123 €def-x 

Мне нужно, чтобы получить символ евро через Regex и в базу данных, но не в качестве символа Евро.

+0

Почему именно символ евро? Что особенного в этом, что вам нужно обрабатывать только это вручную? Пахнет, как бандайда, для меня большая проблема с кодировкой. Кроме того, вы предположительно * удаляете * символ евро с этим регулярным выражением, он вообще не войдет в вашу базу данных. – deceze

+0

ничего конкретного, я хочу, чтобы все html-символы заменялись htmlentities, это сокращенная версия регулярного выражения. – user1209203

+0

Извините, не получив, почему вы заменяете некоторые символы '' '' перед просто кодировкой HTML. – deceze

ответ

1

Try:

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

Если это исправить.

+0

что эхо ничего нет? – user1209203

+0

@ user1209203: Он должен ... –

+0

ОК, но это не – user1209203

1

Вам необходимо поставить модификатор u для регулярного выражения, в противном случае он не обрабатывает символы Unicode:

preg_replace('/.../u', ...) 

Если вы сделаете это, убедитесь, что исходный код и текст в кодировке UTF- 8.

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