2014-01-08 4 views
2

Я пытаюсь создать html-контент в PHP и для события onclick. Я включил функцию с именем uchat для div. Функция принимает параметр имени, который является строкой.escape-символ работает не так, как ожидалось

Как показано ниже:

$name = "Php string"; 

$echostr .= "<div onClick='uchat(\'$name\')'> 
      </div>"; 

Но, передавая значение строки, как это приводит к синтаксической ошибке при щелчке DIV. Потому что одиночная кавычка находится в пределах одной кавычки. Я попытался сбежать от него, но он все равно не работает.

Ошибка заключается в следующем:

SyntaxError: illegal character 
uchat(\ 

Я не уверен, как избежать параметра строки, и я наткнулся на эту проблему так много раз, пожалуйста, помогите, если у вас есть решение для этого.

Спасибо.

ответ

2

сбежавших одинарные кавычки будут конфликтовать с внешними из них:

$echostr .= "<div onClick=\"uchat('$name')\"> 
      </div>"; 
1

попробовать нравится эта

$echostr .= "<div onClick='uchat(&quot;$name&quot;)'></div>"; 
1

Это работает:

<?php 
$name = "Php string"; 

$echostr .= <<< EOF 
<div onClick="uchat('$name')"></div> 
EOF; 

echo $echostr; 
?> 

Выход:

<div onClick="uchat('Php string')"></div> 

Для того, чтобы избежать побега все двойные кавычки и сделать HTML-код более читаемым вы можете использовать EOF.

Смотреть это действие: http://ideone.com/vRCCVH

2

Вот 2 чистые и простых способов сделать это:

1. Классический Concat

$name = "Php string"; 
    $str = "<div onClick=\"uchat('" . $name . "')\"></div>"; 
    print $str; 

2. Использование Sprintf (http://us3.php.net/manual/en/function.sprintf.php)

$name = "Php string2"; 
    $str = sprintf("<div onClick=\"uchat('%s')\"></div>", $name); 
    print $str; 
Смежные вопросы