В настоящее время я пишу свою собственную систему управления контентом, используя OOP PHP и файловую архитектуру Model-View-Controller. Из-за упомянутой системы MVC мне нужно динамически визуализировать содержимое данного сообщения в определенный элемент. Я уже написал сценарий для этой цели, и он работает нормально. Проблемы учитываются, когда в блоге есть текст с пробелами в абзаце (внутри строки). Это, очевидно, вызывает проблемы, потому что он активно разрушает строковую форму, например, », что напрямую приводит к тому, что строка не выполняется в браузере надлежащим образом. Я хочу сказать, что если внутри строки столько пробелов (из-за абзаца текста), разметка, очевидно, уничтожается, и в результате она не отображается вообще, или так и должно быть.
В дополнение к этому рассмотрению / предположению я получаю сообщение об ошибке «Uncaught: Syntaxerror: Invalid или notktected token», которое, без сомнения, находится в прямой комбинации с моим описанием выше. Когда я нажимаю на имя файла в конце отчета об ошибке в консоли, я перенаправляюсь на полностью пустую страницу, так что это не будет правильным способом отладки.
Поскольку это общий вопрос возможностей JavaScript и / или PHP, когда дело доходит до манипулирования строками, мне не нужно предоставлять какие-либо фрагменты кода. Тем не менее, вы можете проверить мой Github для получения дополнительной информации о кодах в любом случае.
Вот ссылка на проект: https://github.com/F9lke/basic-cms. Обратите внимание, что комментарии и сообщения пишутся на немецком языке в текущем состоянии проекта. Это обязательно изменится в будущем. Сценарий, о котором я говорю, находится в renderOutput.class.php в каталоге model / render.
Знаете ли вы решение этой проблемы или вы уже сталкивались с подобной ситуацией? Пожалуйста, дайте мне знать и хорошего дня!
Спасибо заранее, J0nny
** РЕДАКТИРОВАТЬ **
Я думаю, что объяснил проблему довольно хорошо, но я постараюсь получить более конкретную информацию. Я имел в виду в своем обширном описании выше, что пробелы в тексте абзаца явно разбивают кавычки. Если вы посмотрите на мой скрипт, который я предоставил, предоставив вам проекты GitHub, вы заметите, что я передаю текст через переменную php в переменную JavaScript. Это необходимо, но может привести к значительным проблемам из-за кавычек. В этом состоянии я написал это следующим образом:
echo "targetClass.innerHTML = '$text' + targetClass.innerHTML;\n";
Проблемы могут возникать, если они выполняются другим способом, потому что кавычки не будут соответствовать содержавшейся разметке. Чтобы понять это, вы должны принять во внимание, что этот метод отображает фактическую разметку, как показано в следующем примере:
echo "targetClass.innerHTML = '<div class="exampleClass">foo</div>' + targetClass.innerHTML;\n";
Теперь снова проблема, которую я описал выше; Если существует сообщение с текстом, содержащим несколько пробелов (= абзацы, например), то разметка, по-видимому, перестает выполняться, и браузер регистрирует ошибку «Неверный или незащищенный токен».
Вот почему я поставил вопрос о том, как сократить эти пробелы. Надеюсь, теперь вы можете лучше понять эти проблемы.
J0nny
Для строк в кавычках вы можете использовать малоизвестные HEREDOC и NEWDOC,
Это необходимо, но может привести к значительным проблемам из-за кавычек.
Несколько заметок
"
что касается переменной интерполяции'
Хорошо, так что несколько примеров
//heredoc
echo <<<HTML
targetClass.innerHTML = '<div class="exampleClass">foo</div>' + targetClass.innerHTML;
HTML;
//newdoc
echo <<<'HTML'
targetClass.innerHTML = '<div class="exampleClass">foo</div>' + targetClass.innerHTML;
HTML;
Тег HTML
может быть чем угодно. Так в чем же разница, как я сказал о интерполяции переменных, но я покажу вам.
$foo = "hello world";
//heredoc
echo <<<TAG
$foo
TAG;
//newdoc
echo <<<'TAG'
$foo
TAG;
Выход
//heredoc
hello world
//newdoc
$foo
Да, и если выгода не очевидна, вам больше не нужно использовать кавычки в PHP для строки, так что вы можете использовать оба '
а также "
без выхода на PHP.
Другой выбор — убежать от них, как нормальный человек, но это скучно …
echo "targetClass.innerHTML = '<div class=\"exampleClass\">foo</div>' + targetClass.innerHTML;\n";
Смотри без \
PHP думает, что это строка:
echo "targetClass.innerHTML = '<div class="
Тогда остальное вызывает синтаксическую ошибку, хорошо, если я не пропустил фактический вопрос в той стене к тексту, который вы написали.
Одно слово «осторожность»
Если есть сообщение …, которое напрямую приводит к тому, что строка не выполняется должным образом в браузере.
Если пользователи сайта могут что-либо сохранить для этого, например, сделать сообщение, то вы открываете свой сайт до XSS (межсайтовый скриптинг), где злонамеренный пользователь вставляет Javascript в сообщение, а затем при просмотре другими пользователями этот JavaScript будет украсть такие вещи, как сессионные куки и отправить их ранее упомянутому злоумышленнику. Затем этот пользователь может потенциально взломать любые сеансы входа в систему, которые имел несчастный пользователь, просмотревший это сообщение (что может быть не так, как ваш сайт). Так что будьте осторожны при выполнении HTML, предоставленного третьими лицами.
Enyjoy.
Других решений пока нет …