$string2 = preg_replace('#[-.\'"(),/\;:<>]*#u', '', $string);
на одном сервере с Debian эта регулрка жрет еще и все русские буквы
кто виноват и что делать? :huh:
Спустя 4 минуты, 56 секунд (10.05.2011 - 20:24) inpost написал(а):
Ты указал [.] , а это значит все символы вообще, в добавок ещё указал, что для восприятия русских букв использовать кодировку UTF-8.
Если тебе точка нужна, а не все символы, то точку надо экранизировать. Советую часть других символов тоже экранизировать.
Если тебе точка нужна, а не все символы, то точку надо экранизировать. Советую часть других символов тоже экранизировать.
Спустя 48 минут, 57 секунд (10.05.2011 - 21:13) phpdreamer написал(а):
смотри, вот я у себя на локалхосте проверяю:
<?php
$string = '_ + - текст из русского, українського and engish ... < > ( ) ;: =) //// \\\\ \' " ';
$string2 = preg_replace('#[-.\'"(),/\;:<>]*#u', '', $string);
print_r($string); // _ + - текст из русского, українського and engish ... < > ( ) ;: =) //// \\ ' "
echo "\n";
print_r($string2);// _ + текст из русского українського and engish = \\
//убрало символы -.;:'"(),/<>
Спустя 7 минут, 50 секунд (10.05.2011 - 21:21) phpdreamer написал(а):
пробую на локалхосте "экранировать":
работает точно также, то есть "\" не работает как экранирование, а как символ.
пробую то же самое на этом проблемном сервере:
оба варианта одинаково жрут русские буквы
preg_replace('#[-\.\'"(),/\\;:<>]*#u', '', $string)
работает точно также, то есть "\" не работает как экранирование, а как символ.
пробую то же самое на этом проблемном сервере:
оба варианта одинаково жрут русские буквы
Спустя 51 минута, 4 секунды (10.05.2011 - 22:12) pyha_coder написал(а):
"word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl. Определение букв и цифр управляется символьными таблицами, с которыми PCRE был собран. И, как следствие, эти наборы могут отличаться в различных локализированных дистрибутивах. Например, в локали "fr" (Франция) некоторые символы с кодом выше 128 используются для записи ударных символов и, соответственно, соответствуют маске \w.
Может в этом проблема у тебя?
Глянь версию pcre, в подробности не вдавался но как есть был баг связан с подобной проблемой как у тебя.
Может в этом проблема у тебя?
Глянь версию pcre, в подробности не вдавался но как есть был баг связан с подобной проблемой как у тебя.
Спустя 23 минуты, 51 секунда (10.05.2011 - 22:36) phpdreamer написал(а):
не похоже, так как спец. символы -.;:'"(),/<> должны же быть одинаковыми и в французской и русской локали.
Но есть предположение, что сервере нет локали с UTF-8
Но есть предположение, что сервере нет локали с UTF-8
Спустя 6 минут, 46 секунд (10.05.2011 - 22:42) inpost написал(а):
phpdreamer
попробуй указать locale русский
попробуй указать locale русский
Спустя 5 минут, 19 секунд (10.05.2011 - 22:48) phpdreamer написал(а):
setlocale с самого начала ru_RU.utf-8
Спустя 4 часа, 33 минуты, 45 секунд (11.05.2011 - 03:22) Invis1ble написал(а):
inpost
Цитата |
Ты указал [.] , а это значит все символы вообще |
В квадратных скобках точка не интерпретируется как спецсимвол, поэтому экранировать ее не нужно.
phpdreamer
А зачем вообще регулярка? str_replace() вроде как пошустрее.
Спустя 15 часов, 55 минут, 27 секунд (11.05.2011 - 19:17) phpdreamer написал(а):
да, наверно так и поступлю...
но все равно интересна причина баги
но все равно интересна причина баги
Спустя 47 минут, 4 секунды (11.05.2011 - 20:04) Invis1ble написал(а):
phpdreamer
не знаю насчет бага, но можно еще так сделать:
не знаю насчет бага, но можно еще так сделать:
$string = '_ + - текст из русского, українського and engish ... < > ( ) ;: =) //// \\\\ \' " ';
echo $string . '<br />';
$string = preg_replace('#[[:punct:]]#u', '', $string);
echo $string; // текст из русского українського and engish
_____________
http://phpdreamer.ru
http://blog.phpdreamer.ru
http://php5shop.com