1

スライダーのキャプション部分を取得して、ワードプレス サイトのそれぞれの記事の URL にリンクしようとしています。編集する必要があると思われるプラグインコードのセクションを見つけたと確信していますが、次のことをしようとすると:

<?php 
echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . onclick="location.href='$url';"</div>";

?>

「構文エラー、予期しない T_STRING、',' または '; が必要です」というメッセージが表示されます。スライダーに表示され、サイトの残りの部分が機能しません。ここでやろうとしたことの多くのバリエーションを試しましたが、うまくいくものを見つけることができないようです.

役立つ場合は、元のスライダー全体のコードを次に示します: http://pastebin.com/4nKxXkSa

4

5 に答える 5

2

二重引用符の開始/終了が間違っています。PHP では、文字列を引用符または二重引用符で囲む必要があります。また、二重引用符で囲まれた文字列に二重引用符を入れたい場合は、. でエスケープする必要があります\

たとえば、onclickこれは文字列の一部であるため、 の前に引用符または二重引用符を開く必要があります。

また、と の間ではなく、タグonclick内にある必要があり<div ...><div>ます</div>


最終的に、PHP コードは次のようになります(テストを容易にするために、変数にハードコードされた値を設定しました)

$sl_caption = 'ID';
$sl_htmlcaption = 'HTML';
$url = "URL";

echo "<div id='" 
    . $sl_caption 
    . "' class='nivo-html-caption' onclick=\"location.href='$url'\">"
    . $sl_htmlcaption 
    . "</div>"
;

そして、出力として次の HTML を取得します。

<div id='ID' class='nivo-html-caption' onclick="location.href='URL'" >HTML</div>
于 2012-05-20T09:10:45.000 に答える
0

文字列の引用符が正しく配置されていません。これを試して

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . "onclick=\"location.href='$url';\"</div>";
于 2012-05-20T09:12:09.553 に答える
0

問題はそれが言うことです-「onclick」はあなたの例(T_STRINGPHPの場合)では引用符で囲まれた文字列ではありません。文字列内で結合 (連結) するものはすべて、a) 引用符で囲まれた文字列 (一重または二重)、b) 文字列に変換できるもの、または c) 変数/定数/関数呼び出しのいずれかである必要があります。

そのエラーがない場合、現在の例では、タグの属性ではなく、タグのコンテンツとして「onclick」も含まれています。あなたが欲しいと思うのは:

<?php 
 echo "<div id='" . $sl_caption . "' class='nivo-html-caption' onclick='location.href=\'"  . $url . "\''>" . $sl_htmlcaption . "</div>";
?>

標準の HTML 属性が必要な場合は、通常、二重引用符を使用します。これにより、次のようになります。

<?php 
 echo '<div id="' . $sl_caption . '" class="nivo-html-caption" onclick="location.href='  . $url . '">' . $sl_htmlcaption . '</div>';
?>

また、通常ではなく onclick を使用して現在の場所を設定している理由はあります<a href>か?

于 2012-05-20T09:15:21.260 に答える
0

クォートだけが問題ではありません。onclick も div 要素のプロパティから外れています。それは(より明確にするためにシングルのダブルを変更します):

echo '<div id="' . $sl_caption . '" class="nivo-html-caption" onclick="location.href=' . $url . ';">' . $sl_htmlcaption . '</div>';
于 2012-05-20T09:15:33.100 に答える
0

あなたの引用符が問題です。そのはず:

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'>" . $sl_htmlcaption . "onclick=\"location.href='$url';\"</div>";

連結演算子 ( ) の後に文字列を再び開始するには二重引用符が必要でし.たが、PHP インタープリターが文字列がすぐに終了したと認識しないように、この文字列内の二重引用符を黒のスラッシュでエスケープする必要があります。


Pascal が指摘したように、onclick属性は実際には宣言divタグ内にある必要があります。

echo "<div id='" . $sl_caption . "' class='nivo-html-caption'onclick=\"location.href='$url';\">" . $sl_htmlcaption . </div>";

補間を使用すると、作業が簡単になる場合もあります。二重引用符を使用して文字列を区切る場合、次のように中括弧 ( )を使用して変数の値を挿入できます。{}

echo "<div id='{$sl_caption}' class='nivo-html-caption'onclick=\"location.href='{$url}';\">{$sl_htmlcaption}</div>";

この方法では、文字列を 1 回 (最初と最後に) 開いて閉じるだけで済みます。

注意:

  • 関数呼び出しを直接補間することはできません。同様に連結するか"<p>".strlen($x)."</p>"、結果を変数に格納して前のように補間することができます。"<p>{$result}</p>".
  • ただし、文字列内の二重引用符をエスケープする必要があります。
于 2012-05-20T09:10:27.697 に答える