При переходе от JS к PHP регулярное выражение с символом ~ падает - PullRequest
0 голосов
/ 25 апреля 2020

Я отправляю эту строку шаблона регулярного выражения через JQuery Ajax как часть массива:

\[\[!?[^*$%+~]*($|\n)

Массив закодирован следующим кодом:

 var data = formToJSON(form.elements);
 var dataToSend = [];
 dataToSend = "data=" + btoa(JSON.stringify(data, null, ""));

На приемном конце он конвертируется с помощью этого кода:

$data = json_decode(base64_decode($data,true), true); 

Процесс работает со всеми другими действительными регулярными выражениями, которые я пробовал. При этом base64_decode () возвращает false. Виновником кажется символ ~ (он не используется в качестве разделителя). Если я удаляю это, это работает. Самое странное, что если я переместу его в любую другую позицию в классе персонажей, это сработает:

\[\[!?[^~*$%+]*($|\n)

Не имеет значения, какой символ предшествует символу ~, просто не может go в конце класса персонажа. Это не вызывает никаких проблем за пределами класса символов.

Знак плюс не является проблемой, равно как и установка второго аргумента для двух функций декодирования.

WTF вызывает это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...