[PHP, PCRE] Кодировки и preg_replace

DavyJohnes
На сайте с 05.01.2011
Offline
84
691

Здравствуйте! Помогите разобраться.

Имеется вот такой кусок кода:


$keyword=url_decode($_GET['keyword']);

$keyword=trim(preg_replace(
array('#/+$#u',
'#[^\w\h.,!]+#u'),
array('',
'_'),
$keyword));

Цель всего этого - максимально возможно очистить входную строку от всякой ереси.

Вопрос №1:

Как быть уверенным что в $keyword всегда попадет строка в кодировке utf-8, при том что передаваемая в $_GET строка может быть в любой кодировке ? Штатные mb_detect_encoding и mb_convert_encoding практически не выполняют своих функции (много гуглил по этому поводу, ответ везде один - не работает).

Вопрос №2:

Собственно по Preg_replace:

если на вход подать строку: "привет&всем", то функция отрабатывает как надо, возвращается "привет_всем", а вот если на входе "привет?всем" то на выходе получается "привет", согласно какому алгоритму так получает, не могу понять. Такой же эффект наблюдается при использовании #, быть может и других символов - не проверял.

Заранее благодарю за ответы.

https://handy-tools.io (https://handy-tools.io) - Набор полезных утилит для всех!
D
На сайте с 14.01.2007
Offline
153
#1

подходите с другой стороны.

что может быть в keyword?

sabotage
На сайте с 14.02.2007
Offline
192
#2
DavyJohnes:
Цель всего этого - максимально возможно очистить входную строку от всякой ереси.

Конкретнее пиши

siv1987
На сайте с 02.04.2009
Offline
427
#3
DavyJohnes:
Как быть уверенным что в $keyword всегда попадет строка в кодировке utf-8

http://www.php.net/manual/ru/regexp.reference.unicode.php

DavyJohnes
На сайте с 05.01.2011
Offline
84
#4
Dinozavr:
подходите с другой стороны.
что может быть в keyword?

Немного не понял Вашу мысль. В keyword может быть все что угодно.

IL
На сайте с 20.04.2007
Offline
435
#5
DavyJohnes:
В keyword может быть все что угодно.
DavyJohnes:
очистить входную строку от всякой ереси.

так может или чистить надо?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
D
На сайте с 14.01.2007
Offline
153
#6

что значит "всё что угодно". если вы хотите помощи, напишите для чего у вас используется keyword

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