3

PHPタグ内にHTMLコードを書いています。すでにアンカータグのスタイルが書かれているので、一部変更すると影響があります。そのため、スパンの onclick イベント内にコードを記述しようとしています。これが私のコードです

 <div>
    <span style='cursor:pointer;' onclick='window.location.href='www.google.com'>
       ".$array1[$i] ['name']."
    </span>
 </div>

その配列 [name] をクリックすると、google.com に移動するはずです。問題は、私が自分の URL を言及するために使用した一重引用符です。このイベントで文字列をエスケープするにはどうすればよいですか?

4

4 に答える 4

4

すでにコードを取得していると思います。ただし、もう少し説明します。

(i) 引用符には、一重引用符 (' ... ') と二重引用符 (" ... ") の 2 種類があります。あるスタイルの引用を外側の引用として使用している場合、その内部で別のスタイルの引用を使用でき、引用をエスケープする必要はありません。

例 echo '彼は「なんて素敵な日だ」と言った'; 出力: 彼は「なんて素敵な日だ」と言った

echo "She said 'that is true'";

出力: 彼女は「それは本当だ」と言った

(ii) ただし、2 番目のケースで出力したい場合 -> She said 'that's true' 引用符をエスケープする必要があります。PHP のデフォルトのエスケープ文字は \ です

すでに指摘したように、引用符は PHP にとって特別な意味を持ちます。特別な意味を取り除くために、文字を「エスケープ」します。

したがって、次のように書く必要があります。

また

echo "She said \"that's true\"";

これがエスケープの基本概念です。ただし、場合によっては、2 種類の引用符の意味が異なることに注意してください。二重引用符はその中のコンテンツで実行されますが、一重引用符はその中のコンテンツが評価されないと仮定します。

すなわち

$i = 1;

echo "$i";

// output: 1

echo '$i';

// output: $i

コードを書くときは、このことを念頭に置いてください。

于 2012-12-08T07:48:41.693 に答える
3
    $strLocation = 'http://www.google.com';
    $strLink = "<span onclick='window.location.href=&#39;".$strLocation."&#39;'>HI there</span>";

(or)

$strLink = '<span onclick="window.location.href=\''.$strLocation.'\'">HI there</span>';

    print $strLink;

Using&#39;は HTML の特殊文字で、文字列操作中に検出されず、ブラウザーにのみ表示されます。

を使用\すると、文字列が単純にエスケープされます。

于 2012-12-08T07:14:21.727 に答える
1

そもそもなぜ一重引用符を使用しているのですか?

<div>
    <span style="cursor:pointer;" onclick="window.location.href='www.google.com'">
        <?php echo $array1[$i]['name'] ?>
    </span>
</div>

必要なのはそれだけです。それ以上複雑にする必要はありません:)


あなたのコメントによると、これを 内で使用していますecho。ちょっとばかげていると思いますが、その場合はheredoc構文を使用します

echo <<<EOD
    <div>
        <span style="cursor:pointer;" onclick="window.location.href='www.google.com'">
            <?php echo $array1[$i]['name'] ?>
        </span>
    </div>
EOD;
于 2012-12-08T07:47:14.900 に答える
0

使用するjson_encodeと、エスケープが確実に管理されます。

<? $exampleA = "Escape this 's"; ?>
<? $exampleB = 'Escape this "s'; ?>
<script>
var a = <?= json_encode($exampleA) ?> // result: var a = "Escape this 's"
var b = <?= json_encode($exampleB) ?> // result: var b = "Escape this \"s"
</script>

ここにあります: https://stackoverflow.com/a/6269254/922522

于 2015-08-14T16:54:22.773 に答える