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

joomproducer

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

Если текст вводится с переносами и так и сохраняется в базе, функция глючит. Кавычки тоже мешают.
 

ustas

Элекомист №1
да парни, работа по вам не скучает. Вот фанат зря сюда не заглянул.
 

cDLEON

Онанист РНРСlub
joomproducer
Объясните мне что вы сделали по пунктам.
Для каждой строчки кода, который вы привели.
 

Wicked

Новичок
Автор оригинала: kruglov
Что-то мне кажется, что функция эскейпинга JS-данных по функциональности должна быть довольно сильно похожа на [m]mysql_real_escape_string[/m]
скорее уж на json_encode(), который, будучи примененным к строке, просто сделает из нее валидный в js литерал. У себя я использовал именно его.
 

joomproducer

Новичок
cDLEON
Объясните мне что вы сделали по пунктам.
Для каждой строчки кода, который вы привели.
PHP:
$str = nl2br($str); /* добавляем тег <br /> к переносам строк - это позволяет  
java-скрипту отображать форматирование так, как это задумывалось автором 
текста, хранимого в переменной $str */

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

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

Двойные кавычки, при желании, можно сохранить, заменив мнемоникой &amp;quot; (сообщать на этом форуме, какая функция это делает, думаю, излишне).
 

cDLEON

Онанист РНРСlub
Упс. Я думал это автор понаписывал.
Вообще то лучше всего не удалять "\r\n а просто слешить и их.
А вот одинарную ковычку лучше не трогать (незачем) а в JS при объявлении переменной использывать только " ковычку.
И то, что вы написали, я считаю, для автора топа - медвежьей услугой.
PHP:
$text ="<table> 
<tr> 
<td>Test</td> 
</tr> 
</table>";
Кстати, применимо к этой задаче ваши <BR> испортят автору всю малину.А именно такая задача была поставлена автором.
 

serglt

Анус, ой, Ахтунг
PHP:
<?
$str = "Hello\n\nworld!";
echo addslashes ($str);

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

joomproducer

Новичок
<? $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>
 

serglt

Анус, ой, Ахтунг
Да ошибся (сори) 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 ?>
 

Wicked

Новичок
Лично я считаю, что у функции addslashes вообще нету применения. Ибо в этой функции добавление слэшей является самоцелью, что для меня выглядит довольно смешно.

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

serglt
а ты уверен, что твоя функция нормально справится со строкой, состоящих из всех символов - 0x0...0xFF ?
 

serglt

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