Мне нужно иметь возможность хранить и отображать регулярные выражения. В моем случае пользователь вводит регулярное выражение в форму, и эту точную последовательность символов необходимо вывести на экран через некоторое время. Проблема в том, что эхо меняет символы.
Так, например, я попробовал это
$regex = '(?<=amount\">\$)(.*?)(?=</strong>)';
, но когда я его повторяю ..
echo $ regex;
Я получаю ...
((((amount\">\$)(.*?)(?=)
Если я сделаю это
$ regex = htmlentities ($ regex);
Я получу это, что помогло сотсутствующая часть регулярного выражения, но не кратное ((((
((((amount\">\$)(.*?)(?=</strong>
htmlspecialchars тоже не помогло.
Как мне заставить его отображать переменную в точности так, как она написана? И что мне нужно сделать, чтобы сохранить их в MySQL и получить их точно так, как написано?
EDIT - в ответ на некоторые замечания ниже я добавлю немного больше деталей. Этот новый пример был сделан на PHP 7.1сервер в облаке, Centos 7 отображается с использованием Chrome.
$regex = '(?<=amount\">\$)(.*?)(?=</strong>)';
$page_elements_regex[1][0] = $regex;
$page_elements_regex[1][1] = addslashes($regex);
$page_elements_regex[1][2] = htmlspecialchars($regex);
$page_elements_regex[1][3] = htmlentities($regex);
echo "regex " . $page_elements_regex[1][0] . "<BR>";
echo "addslashes " . $page_elements_regex[1][1] . "<BR>";
echo "htmlspecialcharacters " . $page_elements_regex[1][2] . "<BR>";
echo "htmlentities " . $page_elements_regex[1][3] . "<BR>";
Results
regex ((((amount\">\$)(.*?)(?=)
addslashes ((((amount\\\">\\$)(.*?)(?=)
htmlspecialcharacters ((((amount\">\$)(.*?)(?=</strong>)
htmlentities ((((amount\">\$)(.*?)(?=</strong>)
Это также большая подсказка, что если вы снимите первый (как этот
*)1031 *
Результат удаляет первое a из суммы !! Это интерпретирует регулярное выражение вместо его повторения?
?(((mount\">\$)(.*?)(?=)