Как удалить возвраты каретки из вывода строки?

Я использую Wordpress в качестве CMS и пытаюсь позволить пользовательским полям быть введенными для заполнения информационных окон в сценарии Google Map. Я использую это для выбора идентификатора и получения по запросу в содержании от пользовательского поля.

Это хорошо работает, если нет никакой HTML в пользовательском поле, которое повреждает сценарий.
Я посмотрел на htmlspcialchar и htmlentities, а скорее, чем полоса все, что я хотел бы иметь его, вышел так, это все еще работает, и HTML неповрежден. Какие-либо предложения? Я довольно плохо знаком с PHP и был бы очень признателен за любые указатели.

Через некоторое время я все еще не могу найти отличное решение для этого. TheDeadMedic предложил, чтобы я использовал esc_js

но это распечатало весь фактический HTML-код вместо того, чтобы представить его.

Спасибо nickfs как то решение было немного лучше, но сценарий все еще повреждается, если существуют какие-либо возвраты каретки в выводе, который делает это не настолько большим для CMS.

Что-то еще, что я попробовал, должно было использовать функцию для обрезки.. это - то, где я в теперь, где это не работает пока никакой \r в выводе. Строка $snip, mapExcerpt поле - то, куда возвраты прибывают из:

<?php $post_id = 207; // Wordpress Post ID
$my_post = get_post($post_id);
$mapTitle  = $my_post->post_title;
$mapIMG = get_post_meta($post_id, 'mapImage', true);
$snip = get_post_meta($post_id, 'mapExcerpt', true);
$lat = get_post_meta($post_id, 'lat', true);
$long = get_post_meta($post_id, 'long', true);
$pass_to = '<div class="span-8"><div class="mapTitle">'.$mapTitle.'</div><div class="mapContent">'.$snip.'</div></div>';
$trimmed = trim($pass_to, " \r.");
?>
var point = new GLatLng('<?php echo $lat; $lat; ?>','<?php echo $long; $long; ?>');
var marker = createMarker(point,"<?php echo $mapTitle; $mapTitle; ?>", '<?php echo addslashes($trimmed); ?>');
map.addOverlay(marker);

Какие-либо другие идеи там о том, как я могу осуществить это?

28
задан Zac 27 August 2010 в 19:13
поделиться

4 ответа

Я не совсем понимаю вашу точную проблему, но ответ на заголовок вашего вопроса довольно прост:

$snip = str_replace('.', '', $snip); // remove dots
$snip = str_replace(' ', '', $snip); // remove spaces
$snip = str_replace("\t", '', $snip); // remove tabs
$snip = str_replace("\n", '', $snip); // remove new lines
$snip = str_replace("\r", '', $snip); // remove carriage returns

Или комплексное решение:

$snip = str_replace(array('.', ' ', "\n", "\t", "\r"), '', $snip);

Вы также можете использовать регулярные выражения:

$snip = preg_replace('~[[:cntrl:]]~', '', $snip); // remove all control chars
$snip = preg_replace('~[.[:cntrl:]]~', '', $snip); // above + dots
$snip = preg_replace('~[.[:cntrl:][:space:]]~', '', $snip); // above + spaces

Вы все равно нужно будет использовать addslashes() для вывода $snip внутри Javascript.

111
ответ дан 20 November 2019 в 01:50
поделиться

Используйте собственный WP esc_js () , который избегает кавычек и разрывов строк для строк JavaScript.

1
ответ дан 20 November 2019 в 01:50
поделиться

Поскольку вы помещаете это в Javascript, вам нужно экранировать его для строк javascript. addslashes() должно помочь.

1
ответ дан 20 November 2019 в 01:50
поделиться

Попробуйте JSON-кодировать его, я всегда так делаю, когда отправляю данные из PHP в Javascript. Это решает большинство проблем с кодировкой, включая новые строки.

1
ответ дан 20 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: