Я пытаюсь передать переменную PHP, содержащую текстовое значение (содержимое html), прочитанное из базы данных SQL, в функцию Javascript. Я пытаюсь использовать разные подходы, такие как json_encode(utf8_encode())
и preg_replace()
, но ни один из них не работает.Передача многострочной переменной PHP на функцию Javascript
Вот мой код:
<?php
$db = new PDO('mysql:host=localhost;dbname=ramtin_data;charset=utf8', 'root', '');
foreach($db->query('SELECT * FROM posts') as $row)
{
$qtitle = $row['title'];
$qcontent = $row['content'];
$qpage = $row['page_id'];
$qcontent = json_encode(utf8_encode($qcontent));
echo "<script type='text/javascript'>
displayPost('$qtitle', '$qcontent');
</script>";
}
?>
Сразу хочу отметить, что, когда я вставить строку в моей базе данных с простой линии (в том числе и "
/
) в content
поле, приведенный выше код работает.
Я также попытался следующий код и получил тот же результат:
$qcontent = preg_replace('/\v+|\\\[rn]/','<br/>', $qcontent);
Значение внутри content
поля в базе данных является следующая строка:
<img src="images/death_truck_titleDisplay.jpg" width="400" height="140" class="globalImageStyle" /><p class="postBodyContentParagraph">The work for another Construct2 game "<a href="http://ramt.in">Death Truck</a>" has been started.</p><p class="postBodyContentParagraph">I've had the idea since a few weeks ago and I'm amazed that how much it had developed into better shapes and more complex gameplay ideas only through the first weeks that I've started working on the graphics and the game codes/logic.</p><p class="postBodyContentParagraph">I'm actually done with the truck and pedestrian graphics and movement codes (plus the interaction code between pedestrians and the truck) and have included the game in the projects page as a Work In Progress. You can check some of the graphics and the idea of the whole game (plus some gameplay ideas) in the projects page.</p>
Как я должен пройти приведенное выше значение для функции displayPost()
Javascript?
UPDATE
Проблема была с одинарные кавычки внутри значения. В принятом решении было предложено заменить все '
s на \'
с использованием $qcontent = str_replace("'", "\'", $qcontent);
, который отлично работал.
В результате, однако цитирует json_encode()
который я нашел самый простой способ удалить оберточной "
с, чтобы использовать content.slice(1, content.length - 2)
(content
является вторым параметром, который относится к $qcontent
в разделе PHP кода) внутри функции Javascript ,
Котировки должны быть экранированы. действительно, это должен быть запрос ajax. вы можете отправить html внутри json, установив флаг hexquote. просто Google, как кодировать html в json. – r3wt
Цитаты не должны быть экранированы, если вы используете два разных. –
Что означает «не работает»? –