Как убрать переносы и пробелы

  • Автор темы Автор темы grusha
  • Дата начала Дата начала
Автор оригинала: cDLEON
Можно вас спросить что вы этим делом сделали?
Убрал глюк Javascript'а, который в Jooml'e выводит всплывающие подсказки (function mosToolTip).
Действительно помогло.

Если текст вводится с переносами и так и сохраняется в базе, функция глючит. Кавычки тоже мешают.
 
да парни, работа по вам не скучает. Вот фанат зря сюда не заглянул.
 
joomproducer
Объясните мне что вы сделали по пунктам.
Для каждой строчки кода, который вы привели.
 
Автор оригинала: kruglov
Что-то мне кажется, что функция эскейпинга JS-данных по функциональности должна быть довольно сильно похожа на [m]mysql_real_escape_string[/m]
скорее уж на json_encode(), который, будучи примененным к строке, просто сделает из нее валидный в js литерал. У себя я использовал именно его.
 
cDLEON
Объясните мне что вы сделали по пунктам.
Для каждой строчки кода, который вы привели.
PHP:
$str = nl2br($str); /* добавляем тег <br /> к переносам строк - это позволяет  
java-скрипту отображать форматирование так, как это задумывалось автором 
текста, хранимого в переменной $str */

$str  = preg_replace("/('|\"|\r?\n)/",' ',$str ); 
/* убираем из текста $str кавычки (',") и переносы строк (\r, \n), которые 
вызывают сбои в работе скрипта */

// а потом отдаём $str java-скрипту

Прошу обратить внимание: эти функции НЕ используются для вывода HTML, они нужны для форматирования только того текста, который будет выводить java-скрипт.

Двойные кавычки, при желании, можно сохранить, заменив мнемоникой &amp;quot; (сообщать на этом форуме, какая функция это делает, думаю, излишне).
 
Упс. Я думал это автор понаписывал.
Вообще то лучше всего не удалять "\r\n а просто слешить и их.
А вот одинарную ковычку лучше не трогать (незачем) а в JS при объявлении переменной использывать только " ковычку.
И то, что вы написали, я считаю, для автора топа - медвежьей услугой.
PHP:
$text ="<table> 
<tr> 
<td>Test</td> 
</tr> 
</table>";
Кстати, применимо к этой задаче ваши <BR> испортят автору всю малину.А именно такая задача была поставлена автором.
 
PHP:
<?
$str = "Hello\n\nworld!";
echo addslashes ($str);

$jsVar = "Hello \n\nw'o\"rld";
?>
<script>alert ('<?= addslashes ($jsVar) ?>')</script>
 
<? $jsVar = "Hello \n\nw'o\"rld"; ?>
<script>alert ('<?= addslashes ($jsVar) ?>')</script>

Во-первых, знак равенства не нужен, должно быть:
<script>alert ('<? addslashes ($jsVar) ?>')</script>

Во-вторых, в этом варианте в код страницы выводится пустое предупреждение: <script>alert ('')</script>. Необходимо добавить echo для отображения содержимого переменной:
<script>alert ('<? echo addslashes ($jsVar) ?>')</script>

В-третьих, из исходного текста нужно убрать перенос строки '\n'. С ним java-скрипт не работает, в коде страницы видим:
<script>alert ('Hello
w\'o\"rld')</script>

Перенос делает скрипт нерабочим. Т.е. чтобы Ваш вариант заработал, нужно сделать так:

<? $jsVar = "Hello w'o\"rld"; ?>
<script>alert ('<? echo addslashes ($jsVar) ?>')</script>
 
Да ошибся (сори) addslashes не экранирует \n\r
Вот так будет работать
PHP:
<? 
function toJsStr ($str) {
    return addcslashes ($str, "\n\r\'\"");
}
$str = "Hello\n\nworld!"; 
echo toJsStr ($str); 

$jsVar = "Hello \n\nw'o\"rld"; 
?> 
<script>alert ('<?= toJsStr ($jsVar) ?>')</script>

joomproducer
прежде чем что то говорить сначала мат часть подучи сапляк
PHP:
<? $a = '123'; ?>
<?= $a ?>
 
Лично я считаю, что у функции addslashes вообще нету применения. Ибо в этой функции добавление слэшей является самоцелью, что для меня выглядит довольно смешно.

Другое дело функции, которыеэкранируют строки в соответствии со стандартами, а-ля mysql_*escape_string, htmlspecialchars, var_export, json_encode, preg_quote, ...

serglt
а ты уверен, что твоя функция нормально справится со строкой, состоящих из всех символов - 0x0...0xFF ?
 
Wicked
Пробовал вывести строку последовательности chr (1..255), ошибок в яваскрипт нету. Но в выводе понятно что коробки да ромбы со знаком вопроса :)
0х0 - просто обрубает строку что тоже в принципе предсказуемо.
Не вижу нужды применять двоичные строки в яваскрипте.
 
Сверху