экранировать все кавычки и акценты в переменной php для функции javascript - PullRequest
0 голосов
/ 07 мая 2019

У меня есть этот код:

<html>
<?php
$var="\'quotes\" àccènts";  //  'quotes" àccènts
?>
<button onclick="fun('<?php echo $var ?>');">click me</button>
</html>

, но когда я нажимаю, в консоли появляется сообщение «Uncaught SyntaxError: Invalidable or неожиданный токен»

Я пробовал это:

<button onclick="fun('<?php echo $var ?>');">click me</button>
<?php
function escape($var)
{
    $var=str_replace("'","\\'",$var);
    $var=str_replace("\"","&quot;",$var);
    $var=trim(preg_replace("/\s+/"," ",$var));
    return $var
}
?>

но тогда акценты становятся неизвестными символами, как я могу решить это во встроенном html?

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете обойти это.Например,

<script>
function fun2()
{
   return fun(<?php echo json_encode($var); ?>);
}
</script>

<button onclick="fun2();">click me</button>

Если вы хотите сделать это несколько раз, например, в цикле в списке строк, вы также можете обойти это (если вы не хотите повредить исходные строки php),по:

<script>
// assuming an array of string variables with quotes and accents
var strings = <?php echo json_encode($strings); ?>;
</script>

<?php for($i=0,$l=count($strings); $i<$l; $i++) { ?>
<button onclick="fun(strings[<?php echo $i; ?>]);">Click me!</button>
<?php } ?>
...