Это старый пост, но для обслуживания многобайтовых строк есть как минимум два возможных маршрута, по которым можно следовать. Я предполагаю, что удаление кавычек выполняется, потому что кавычка рассматривается как переменная программы / INI и, следовательно, является ЛИБО «чем-то» или «чем-то другим», но НЕ «смешанными кавычками». Кроме того, НИЧЕГО между соответствующими кавычками должно быть сохраняется нетронутым
Маршрут 1 - использование регулярного выражения
function sq_re($i) {
return preg_replace( '#^(\'|")(.*)\1$#isu', '$2', $i );
}
Используется \ 1 для совпадения с той же кавычкой, что и в начале. модификатор u, делает его способным к UTF8 (хорошо, не полностью многобайтовая поддержка)
Маршрут 2 - с использованием функций mb_ *
function sq($i) {
$f = mb_substr($i, 0, 1);
$l = mb_substr($i, -1);
if (($f == $l) && (($f == '"') || ($f == '\'')) ) $i = mb_substr($i, 1, mb_strlen( $i ) - 2);
return $i;
}