• ベストアンサー

PHPでエスケープされた文字列をJavaScriptで元に戻す方法

PHPのhtmlentities()でエスケープされた文字列をJavaScriptで元に戻す方法ってありますか? 例えば、PHPで(' → ')エスケープされたものを、JavaScriptで(' → ')元に戻す方法 「最初から、PHPでエスケープさせなければいいんじゃねーの?」っていうのは無しでお願いします。(汗)

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.5

No3です。 参考に上げたサイトがダウンしているみたいですね。 しばらくすれば直るとは思いますが、お急ぎでしたら、キャッシュを見つけましたので、そちらを替わりに… (7/26のキャッシュなので、もう少ししたら無くなっちゃうかも) http://74.125.153.132/search?q=cache:s1DJ9WTBZJgJ:jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode.php+javascript+%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%80%80PHP&cd=1&hl=ja&ct=clnk ↑はどうも時間がかかるみたいなので、簡略版(テキスト版)ならこちら http://74.125.153.132/search?q=cache:s1DJ9WTBZJgJ:jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode.php+javascript+%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%80%80PHP&hl=ja&strip=1

becks09
質問者

お礼

参考URLありがとうございます。 http://blog.photoip.net/archives/96 ↑も、貼っていただいたものと、同じこと書いてますね。

その他の回答 (4)

  • petita
  • ベストアンサー率53% (8/15)
回答No.4

while(deci_code.match(/&#(\d+);/)){  deci_code = deci_code.replace(/&#(\d+);/, String.fromCharCode(RegExp.$1)); }

becks09
質問者

お礼

これと同じようなプログラムは書いたのですが、 思うような形では動作はしませんでした。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.3
回答No.2

.innerHTMLでほうりこんで、それをそれですいだす。ってのは?

becks09
質問者

補足

innerHTMLというのも考えたのですが、 innerHTMLは、標準のメソッドではないので、 あまり使いたくないですねー。 でも、便利なんですけどね。

  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

html_entity_decode()という関数があります。

参考URL:
http://www.php.net/manual/ja/function.html-entity-decode.php
becks09
質問者

補足

確かに、ありますね。 しかし、PHPでデコードでは無くて、 JavaScriptなんですよー。

関連するQ&A

  • PHPの文字列のエスケープについて

    php.iniの設定で「magic_quotes_gpc = On」なっており、htmlentities($str, ENT_QUOTES)で、ダブルおよびシングルクオートを共に変換します。 しかし、シングルクオートがエスケープされて、「'」になるのですが、これを「'」に変換しなければなりません。 (そんな依頼を受けて、プログラミングをしていますが、全くうまくいきませんorz。) 単純に考えて、シングルクオートをエスケープしなければよいと思うのですが、 フォームのデータを受けとるときに、シングルクオートをエスケープしなければならないとマズイことでもあるのでしょうか? 変な質問ですが、宜しくお願いします。

    • ベストアンサー
    • PHP
  • JavaScriptでメタ文字エスケープ

    JavaScriptで?や|などのメタ文字をエスケープするために\をつけるよう変換したいのですが、?を置換する場合replaceを使って\?にできたのですが例えば????や|||など連続させると\????と最初だけエスケープされます。これを\?\?\?\?のように変換するにはどうすればよいのでしょうか?また\のエスケープ方法なんかも教えてください。 説明が変で申し訳ありませんが、なかなか上手く変換できず困っています。 PS カテゴリが違いますがJavaScriptでなく、Perlで簡単に可能な場合はPerlでのやり方などもぜひご教授ください。 お願い致します。

  • PHPで「®」や特殊文字のエスケープ

    PHPでフォームから送られてきたデータを、MySQLに登録する際に、 「®」や特殊文字をエスケープして登録したいのですが、 どのようにしたらいいのでしょうか。 「<」や「&」などはhtmlspecialcharsでエスケープできているのですが、 「®」や特殊文字(~やm2など)がエスケープできず、 文字化けを起こして困っています。

    • ベストアンサー
    • PHP
  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • JavaScriptでエスケープ。<script

    JavaScriptで、下記文字列(<script~</script>)を変数に入れ、処理後にdocument.writeしたいです。 <script type="text/javascript" src="http://hoge.jp/s/"></script> どのようにエスケープしたら良いでしょうか?

  • PHPの文字列をJavascriptの変数にする

    PHPの変数に格納された文字列を、直接Javascriptの変数の一部として格納しようと考えています。 例:) <script> var txt = "<?php echo $text; ?>"; </script> しかし、$textにダブルクォーテーションなどの文字が含まれていると、スクリプト全体が破綻します。今のところ、PHPの中で、問題を起こしそうな文字列を変換するように処理しています。 例:) $text = str_replace("\\", "\\\\", $text); $text = str_replace("\"", "\\\"", $text); $text = str_replace("\n", "\\n", $text); これよりもスマートな方法(たとえば用意されている関数を使うなど)がありますでしょうか。

    • ベストアンサー
    • PHP
  • PHPの文字列変数をJavaScriptのalertで表示させたい

    <?php  $mes = 123; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> ↑のコードを実行すると123というメッセージボックスが表示されます。 <?php  $mes = "aaa"; print<<<EOF  <script Language="JavaScript">  <!--   JavaScript:alert( $mes );  //-->  </script> EOF; ?> しかしこのように数値変数でははく文字列変数を渡すと表示できません。 JavaScriptにPHPの文字列変数を受け渡すことはできるのでしょうか?

    • ベストアンサー
    • PHP
  • Javascriptで特殊文字を置換する方法

    表題の件で分からず教えてください。 PerlでHTMLとJavascript(HTML埋め込み)を作成しています。 Javascript(On Click)で、文字列を置換させたいのですが、うまくできません。 (最終的にやりたいことはTextAreaに埋め込んだタグ付き文章を「プレビューする」ようなイメージです) ■置換前の文字列 $body$ ■置換後の文字列 任意の文字列(タグを含む) ネットで調べたところ次の方法でできるようだったので試しましたが、できませんでした。 var rgexp = new RegExp("\$body\$", "g"); str = frm.preview.value.replace(rgexp, "■■■"); 「$」とエスケープ文字をはずすとうまくいくので、多分「$」で失敗しているのだと思いますが 解決が分かりません。 ※エスケープをはずすとPerlの出力時に怒られてしまいます お分かりになる方いらっしゃいましたらお願いします。

  • 文字列のエスケープ処理

    VB6.0を使用してXMLファイルを作成しています。 XMLファイルの値に日本語文字列の場合のみ、エスケープ処理した文字列をセットしなければいけない場所があるのですが、 エスケープ処理した文字列とはどのように実現できるのでしょうか? XML自体があまり詳しくないので、質問内容がおかしいかも知れませんが、どなたかお教えください。 よろしくお願いします。

  • PHPのエスケープシーケンスに関して

    PHPで文字列内で(※だぶるクオーテーションおよびシングルクオーテーション)使用するエスケープシーケンスについて、質問です。 PHPでは例えば \(※バックスラッシュ)を文字列内に含めるときバックスラッシュを二つ続けて入力して print "\\"; 上記の用に記述することになると思いいます。 ただ、上記とは違い  print "  \ "; と上記のようにバックスラッシュの前後にスペースをおいて print することでバックスラッシュをエスケープせずに出力させることができます。 本当はものすごく基本的な動作だと思うのですが、 ちょとこの動きが理解できません。 オライリー本をみてもバックスラッシュはエスケープしないといけないと 記載があります。 よろしくご教授ください。

    • ベストアンサー
    • PHP

専門家に質問してみよう