PHP конвертировать строку в двойных кавычках в строку в одинарных кавычках

Я знаю, что этот вопрос задавался здесь много раз. Но эти решения для меня бесполезны. Я сталкиваюсь с этой проблемой очень плохо сегодня.

// Case 1
$str = 'Test \300';  // Single Quoted String
echo json_encode(utf8_encode($str)) // output: Test \\300

// Case 2
$str = "Test \300"; // Double Quoted String
echo json_encode(utf8_encode($str)) // output: Test \u00c0

Я хочу вывод 2 и у меня есть переменная $ str с одинарными кавычками. Эта переменная заполняется из разбора строки XML. И эта строка XML сохраняется в текстовом файле.

(Здесь \ 300 — кодировка символа А (латинский символ), и я не могу его контролировать.)

Пожалуйста, не дайте мне решение для выше статической строки

заранее спасибо

6

Решение

Это будет делать:

$string = '\300';

$string = preg_replace_callback('/\\\\\d{1,3}/', function (array $match) {
return pack('C', octdec($match[0]));
}, $string);

Он соответствует любой последовательности обратной косой черты, за которой следует до трех чисел, и преобразует это число из восьмеричного числа в двоичную строку. Который имеет тот же результат, что и что "\300" делает.

Обратите внимание, что это будет не работать точно так же для избежал побега; то есть "\\300" приведет к буквальному \300 в то время как приведенный выше код преобразует его.

Если ты хочешь все возможные правила двойных кавычек, соблюдаемые без переопределения их вручную, лучше всего просто eval("return \"$string\""), но это также имеет ряд предостережений.

2

Другие решения

Может вы ищете это

$str = 'Test \300';  // Single Quoted String
echo json_encode(stripslashes($str)); // output: Test \\300
-3

По вопросам рекламы [email protected]