1

ゲストブックのコメントへの返信にスマイリーを追加しました

このコードで1つのコメントに返信したいとき、それはうまくいきます:

if (isset($_GET['action']) && $_GET["action"] == "reply" ) {
    $commentrpl = substr(stripEmails(strip_tags($_POST["txtreply"])), 0, 250);

    $rpl_arr = array(
        "O:-)" => "<img src=\"".DOC_ROOT."images/sml/aa.gif\"\/>",
        ":-)"  => "<img src=\"".DOC_ROOT."images/sml/ab.gif\"\/>",
        ":-("  => "<img src=\"".DOC_ROOT."images/sml/ac.gif\"\/>",
    );

    $commentrpl  = strtr($commentrpl, $rpl_arr);
    $osDB->query('UPDATE ! SET reply = ? WHERE id = ?', array( 
        COMMENTS_TABLE, 
        $commentrpl, 
        $_REQUEST["commentid"] 
    ));
}

しかし、返信が必要なコメントが増えるとすぐに、スマイリーは機能しなくなります。(クリック不可) すべての返信でスマイリーを使用できるようにするには、何を変更する必要がありますか?

これも問題になる可能性のあるJavaScriptの一部です。

function smile4( txt ) {
    doInsert(" " + txt + " ", "", false, document.getElementById('txtreply'));
}

形:

<form name="reply" method="post" action="showprofile.php?id={$profileid}&amp;commentid={$item.id}&amp;action=reply">
    <textarea id="txtreply" name="txtreply" cols="50" rows="5"></textarea>
    <img src="images/sml/aa.gif" onclick="smile4('O:-)');" alt="O:-)">
    <input type="submit" name="btnAdd" value="{lang mkey='send'}" /> 
</form>
4

1 に答える 1

0

strstr の代わりに、次のような str_replace を使用します。

$smiles = array(
    ':-)' => '<img ...>',
    ...
);

$comment = str_replace(array_keys($smiles), array_values($smiles), $comment);

これとは別に、データベースに保存するときではなく、コメント/返信を表示するときに置換を行う方が良いでしょう.

于 2013-03-10T16:45:26.237 に答える