0

一重引用符が原因で、次のコードで php エラーが発生します。

   <?PHP $annoc=echo '<div id="announcement" class="announcement'.$rid1.'">
  <div id="AContent"><span style="margin:0px 0px 0px 20px;">'.strip_tags($notify).'</span>                                                   

  <div style="float:right;">
  <span class="remind" onclick="announce('.$rid1.','.$userID.','Remind')">                   

  &nbsp;&nbsp;&nbsp;  Remind me later</span> &nbsp;&nbsp;
  <span class="dont" onclick="announce('.$rid1.','.$userID.','Dont');"> Don't show me this         

  again</span></div></div></div>';?>

私が間違っていることを教えてください。

4

5 に答える 5

1

この場合のように大量の HTML がある場合は、通常、HTML を文字列に入れるよりも、必要に応じて HTML に PHP を追加する方が簡単です。

これはよりクリーンで、将来のエラーを減らすのに役立つかもしれません:

<div id="announcement" class="announcement<?= $rid1 ?>">
<div id="AContent"><span style="margin:0px 0px 0px 20px;"><?= strip_tags($notify) ?></span>                                                   

<div style="float:right;">
<span class="remind" onclick="announce(<?= $rid1 ?>,<?= $userID ?>,'Remind')">                   

&nbsp;&nbsp;&nbsp;  Remind me later</span> &nbsp;&nbsp;
<span class="dont" onclick="announce(<?= $rid1 ?>,<?= $userID ?>,'Dont');"> Don't show me this again</span></div></div></div>
于 2012-08-09T19:17:33.800 に答える
1

一重引用符をエスケープする必要があります\

    <?PHP $annoc=echo '<div id="announcement" class="announcement'.$rid1.'">
  <div id="AContent"><span style="margin:0px 0px 0px 20px;">'.strip_tags($notify).'</span>                                                   

  <div style="float:right;">
  <span class="remind" onclick="announce('.$rid1.','.$userID.',\'Remind\')">                   

  &nbsp;&nbsp;&nbsp;  Remind me later</span> &nbsp;&nbsp;
  <span class="dont" onclick="announce('.$rid1.','.$userID.',\'Dont\');"> Don\'t show me this         

  again</span></div></div></div>';?>
于 2012-08-09T19:08:50.280 に答える
1

StackOverflow の構文強調表示には、そのうちの 1 つがあります。

;"> Don't show again

そのアポストロフィが文字列から抜け出しています。でエスケープする必要があります。文字列を壊していないすべての一重引用符は、エスケープする必要があります。

;"> Don\'t show again 

ピートが回答で指摘したように、 onclick 変数にはエスケープされていない一重引用符もあります。

于 2012-08-09T19:09:01.477 に答える
1

にアポストロフィがあります

今後これを表示しない

文章。文字列を終了していると思われないように、その文字をエスケープする必要があります。例えば:

Don\'t show me this again
于 2012-08-09T19:09:22.163 に答える
0
<?php 
$annoc = echo '<div id="announcement" class="announcement'.$rid1.'">
            <div id="AContent"><span style="margin:0px 0px 0px 20px;">'.strip_tags($notify).'</span>                                                   

            <div style="float:right;">
            <span class="remind" onclick="announce('.$rid1.','.$userID.',\'Remind\')">                   

            &nbsp;&nbsp;&nbsp;  Remind me later</span> &nbsp;&nbsp;
            <span class="dont" onclick="announce('.$rid1.','.$userID.',\'Dont\');"> Don\'t show me this again</span></div></div></div>';
?>

それはかなりめちゃくちゃです。

役に立つかもしれません: 二重引用符を使用する場合、引用符を多用する必要はありません。

比較:

echo "i speak $myLanguageCount languages";
echo 'i speak '.$myLanguageCount.' languages';
于 2012-08-09T19:15:43.817 に答える