2017-07-06 15 views
0

のエコー複数のネストされた引用符は、私はエラーを取得しないPHPPHP - HTML

echo "<a class='fa fa-ban fa-2x cancelClass' onClick='cancelClass('$id', '$formattedDate', '$time')'></a><p class='text-center'>".$formattedDate." @ $time</p>"; 

を通じてHTMLの次の行をエコーし​​ようとしています。しかし、onClick = 'cancelClass ...'の引用符は正しく解析されず、javascript関数は実行されません。

それは、以下の

echo "<a class=\"fa fa-ban fa-2x cancelClass\" onClick=\"cancelClass('$id', '$formattedDate', '$time')\"></a><p class=\"text-center\">".$formattedDate." @ $time</p>"; 

enter image description here

+0

PHPはSinglequotesとDoublequotesを区別します。あなたは一貫して使用しようとする可能性があります –

+0

'"' https://stackoverflow.com/questions/25916943/uses-for-the-quotentity-in-html –

答えて

2

変更、それをカラーコード化された(別の関数の一例)を取得する必要がありますどのように

Google Chromeのソースビューで色をコード化された取得する方法属性の二重引用符をエスケープすると、正規化されたhtmlを持つことができます

+1

ああありがとう。バックスラッシュの救命力を忘れてしまった。 –

1

あなたが好きな何かをする必要があります:彼らはが適切に解析され得るか

echo "<a class='fa fa-ban fa-2x cancelClass' onClick=\"cancelClass('".$id."', '".$formattedDate."', '".$time."')\"></a><p class='text-center'>".$formattedDate." @ $time</p>"; 
1

は、しかし、あなたが使用するために、間違ったものを指定しました。 Javascriptでは、文字列変数をラップする引用符と "onclick"値をラップする引用符を区別することはできません。これはonclickが早すぎると判断します。

それらを区別するには、それらをエスケープする必要があります。角括弧の内側には\"を使用します。

echo "<a class='fa fa-ban fa-2x cancelClass' onClick='cancelClass(\"$id\", \"$formattedDate\", \"$time\")'></a><p class='text-center'>".$formattedDate." @ $time</p>"; 

トリックを行う必要があります。 HTMLで二重引用符を使用して

?> //temporarily stop interpreting the file as PHP, so the next bit will be output directly as raw HTML 
<a class='fa fa-ban fa-2x cancelClass' onClick='cancelClass("<?php echo $id;?>", "<?php echo $formattedDate; ?>", "<?php echo $time;?>")'></a><p class='text-center'>".$formattedDate." @ $time</p> 
<?php //continue with PHP 
0

はまた、文字列全体のためにそれの最も直接的単に出力をエコーを使用しないでください。 ENT_QUOTESでhtmlspecialcharsを使用すると、二重引用符で囲まれた値をエスケープします。

echo '<a class="fa fa-ban fa-2x cancelClass" onClick="'.htmlspecialchars("cancelClass('$id', '$formattedDate', '$time')", ENT_QUOTES). 
'"></a><p class="text-center">'.$formattedDate." @ $time</p>";