Как удалить все новые строки, а также экранировать символы из строки в PHP? - PullRequest
2 голосов
/ 03 октября 2011

Для веб-приложения YouTube, которое я создаю на PHP, у меня есть простой видеопроигрыватель со встроенным <iframe>, а затем <div> с информацией о загруженном в данный момент видео (описание, идентификатор, заголовок,и т. д.)

A <ul> содержит список видео, которые извлекаются с помощью API gData PHP с YouTube, и каждый <li> содержит ссылку, которая активирует JavaScript, чтобы изменить видеопроигрыватель на правильное видео итакже обновите информацию о видео на странице.

Вот проблема: gData возвращает многострочную, неэкранированную последовательность для описания видео, которая не работает в JavaScript.Как мне удалить разрывы строк и заменить их на <br> (обратите внимание, что это не разрывы строк, такие как \n, это фактические разрывы строк и переводы строк).

Мне также нужно избегать других вещей, которыене будет работать в строке JavaScript, такой как символ апострофа '.Каков наилучший способ сделать это?

Ответы [ 2 ]

5 голосов
/ 03 октября 2011

Не пытайтесь убежать от вещей самостоятельно. Просто используйте json_encode, который обработает все эти детали для вас:

<script type="text/javascript">
    var description = <?php echo json_encode($description) ?>;
</script>
4 голосов
/ 03 октября 2011

Марк Б дал лучший ответ. Используйте json_encode: http://php.net/manual/en/function.json-encode.php Иди, проголосуй за его ответ.

Вот мой первоначальный ответ:

<?php
$data = "Hello, 'world'.\nHow are you doing?\n\"Good?\"\n";
$data = str_replace("\n", '<br>', $data);
$data = str_replace('"', '\"', $data);
$data = str_replace("'", "\'", $data);
echo $data;
?>

То же самое, используя регулярное выражение:

<?php
$data = "Hello, 'world'.\nHow are you doing?\n\"Good?\"\n";
$data = preg_replace("/\n/", '<br>', $data);
$data = preg_replace("/\"|'/", '\"', $data);
echo $data;
?>

Приведя эти примеры, вам на самом деле не нужно избегать ни одинарных, ни двойных кавычек. В JavaScript вы можете использовать как строки в двойных кавычках, так и строки в одинарных кавычках. Итак, используйте одно и избегайте другого.

Возможно, вы захотите избежать обратной косой черты (замените \ на \\), чтобы убедиться, что какой-то забавный загрузчик YouTube не пытается сломать ваш PHP-скрипт, поместив foo\'bar в описании видео. Теперь это может сломать ваш скрипт, если вы не избежите обратной косой черты, потому что строка JavaScript после замены теперь будет выглядеть так: 'foo\\'bar', что является синтаксической ошибкой, поскольку строка заканчивается на 'foo\\'.

...