Escape цитаты в переменной с PHP

Я использую этот код для создания html

echo "<input type='button' onclick=\"myFunc('$param');\" />"; 

Все будет ОК, если $ param не содержит символ ' или " . Как его реализовать для обработки этих ситуаций?

пс. mysql_real_escape_string ($ param) не будет работать корректно, когда пользователь введет " .

Solutions Collecting From Web of "Escape цитаты в переменной с PHP"

Существует несколько функций, которые можно использовать:

 <?php $string = 'string test"'; echo htmlentities($string) . "\n"; echo addslashes($string) . "\n"; 

Они производят следующее:

 string test&quot; string test\" 

Если вы полагаетесь на ввод пользователя, используйте htmlentities($param, ENT_QUOTES);

См. http://uk.php.net/manual/en/function.htmlentities.php

Как сказал Дэмиен; использовать addlashes 🙂

 $param=addslashes($param); echo "<input type='button' onclick=\"myFunc('$param');\" />"; 

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

Не используйте addlashes, так как это бесконфликтный

Если вы вставляете строку в HTML, используйте

 htmlspecialchars($argument, ENT_QUOTES) 

как уже упоминалось.

Часть содержимого onclick представляет собой технический JavaScript, поэтому может оказаться целесообразным избежать содержимого с помощью json_encode (это побочный эффект – это экранирование JavaScript). Аналогично, если у вас есть атрибут стиля, вы хотите избежать содержимого с помощью

 addcslashes($s, "\x00..\x2C./:;<=>?@[\\]^`{|}~") 

(источник: http://translate.google.com/translate?u=http%3A%2F%2Fphpfashion.com%2Fescapovani-definitivni-prirucka&ie=UTF8&sl=cs&tl=en )

Резюме
использование

 $param = htmlspecialchars(json_encode($param), ENT_QUOTES) 

а затем вы можете безопасно включить его в строку HTML

Передать переменную из htmlspecialchars($pram,ENT_QUOTES)

сначала сделайте

 // only for the GUY who didn't read the complete answer :( $param=addslashes($param); 

затем писать код в простой HTML

 <input type='button' onclick="myFunc(<?php echo $param?>);" /> 

Примечание: mysql_real_escape_string работает, когда мы обрабатываем mysqltry с помощью добавок

Это работает для меня …

 echo '<a href="#" onclick="showTable(&#039;'.$table.'&#039;)">'.$table.'</a>'; 

Нет необходимости использовать backslaches для экранирования при использовании одиночной кавычки для эха. Одиночная цитата имеет мой голос для работы с тегами php и javascript + html.