• ベストアンサー

■URLのエンコードについて

■URLのエンコードについて お世話になります。 ■URLのエンコードについて 下記PHPで書いてありますが、google、Firefoxでは正しく移動(表示)できますが IEでは正しく表示できません。 $body .= "<A href='search.php?maker=$col[maker]'>" . substr($col[maker], 0, 50) ."</A> " . "($col[cnt]件)"; 文字コードはEUC-JPですが IEでもできるように教えていただけないでしょうか? 大変困っております。 よろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • yuuki0229
  • ベストアンサー率70% (33/47)
回答No.2

URLのエンコードの方法を知りたいということでしょうか? そのままの関数が用意されています。 $maker = urlencode($col["maker"]); echo "<a href='search.php?maker={$maker}'>・・・</a>"; #そのまま過ぎて外してる気もしますが、ひょっとしたらということで…

kksshhjp
質問者

お礼

yuki0229様 ご回答有難うございました。 関数のことはうっかりしていました。 大変有難うございました。

その他の回答 (1)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

えと。。。どちらかと言うと、吐き出されたHTMLのソースを提示したほうがいいかもしれません。 あと、出来れば HTMLの <head>の中の<meta charset=?>も。

関連するQ&A

  • urlにエンコードしたい。

    urlにエンコードしたい。 まったくの初心者で見よう見まねでやっています。下記を実行したのですが、 while ($col = mysql_fetch_array($rst)) { $body .= "<LI><A href='search.php?comment1=$col[comment1]'> $col[comment1]</A> " . "($col[cnt]件)"; } http://**.**.**/search.php?comment1= ほげほげ になってうまくいきません。 この ほげほげを%A4%DB%A4%B2%A4%DB%A4%B2のようにするには いろいろググってurlencodeをすれば良いのかな?と思い、いろいろ試しましたが うまくいきませんでした。上の文に何を足せば、どう書けばうまくいくのでしょうか? それとも何か違う方法があるのでしょうか? ご存知の方ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • URLエンコーディングで悩んでいます。

    関係者のみのページから特定のページにリンクさせる際に ダミーのリファーを飛ばしてリンクするシステムを作っています。 link.php の内容(EUC) <? $url = $_GET['url']; ?> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <html> <body> 下のURLへリンクします。よろしければクリックしてください。<BR> <a href="<? echo $url; ?>"><? echo $url; ?></a> </body> </html> このスクリプトを引数url http://search.yahoo.co.jp/search?p=%E4%BB%8A%E6%97%A5%E3%81%AF%E8%89%AF%E3%81%84%E5%A4%A9%E6%B0%97&fr=top&src=top (URLエンコードされた文字列)を与えて起動すると URLエンコードされた部分が文字化けしてしまいます。 渡された引数をそっくりそのまま表示し文字化けさせずに表示させることはできないのでしょうか。

    • ベストアンサー
    • PHP
  • エンコードされたURLをGETメソッドで受け取るには?

    ttp://localhost/urltest.php?url=ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp 上記のURLで ttp://localhost/urltest.phpの if(isset($_GET['url'])){ $itemsStr = ($_GET['url']); } print $itemsStr; で受け取りたいのですが、 ttp://search.auctions.yahoo.co.jp/jp/search/auc?p= までしか取得できません。 %A5%AC%A5%E4%A5%EB%A5%C9 の部分が取り出せないようです。%Aだけを受けとることはできるのですが、それ以上長くエンコードされた文字を受け取ろうとすると ttp://search.auctions.yahoo.co.jp/jp/search/auc?p= までしか受け取れません。 他のエンコードを含んだURLも同様でした。 記述したURLは頭のhを取っているので注意してください。省略されてしまうので。 php5.1.4です。 どなたか御存じの方いらっしゃいましたらご教授お願いします。

    • ベストアンサー
    • PHP
  • 日本語をGETで渡す場合URLエンコードは必要?

    下記の例のように全角文字をaタグのGETメソッドでPHPに渡し、その全角文字で検索した 結果を表示するスクリプトを製作中なのですが、 日本語内に空白等もないですし、あらかじめ検索する語が決まっているので ブラウザはIE9とFIREFOX9.0.1で試しましたが両方とも文字化けすることなくOKでした。 このスクリプトを万人向けに公開する場合、URLエンコード必要なのでしょうか? 例: <a href="http://hoge.php?word=日本語">日本語</a>

    • ベストアンサー
    • PHP
  • canonicalのURLエンコードについて

    ネットで無料配布されているAmigodatabaseというPerlで、データベースのサイトを作っております。 以下は、データベースの結果一覧を出力するための、default.htmlというページのソースの一部です。 print <<"<!---HTML--->"; <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML lang="ja"><HEAD> <link rel="canonical" href="$FORM{$SEARCH{1}{Name}}.htm"> (中略) <META name="description" content="$FORM{$SEARCH{1}{Name}} の名産果物です"> <TITLE>$FORM{$SEARCH{1}{Name}} の果物</TITLE> 上記、$FORM{$SEARCH{1}{Name}}には、 検索した際に使ったキーワードが表示自動挿入されます。 このキーワードが、例えば「りんご」だった場合に、 URLエンコードを行って、「%e3%82%8a%e3%82%93%e3%81%94」と 上記、<link rel="canonical" href="$FORM{$SEARCH{1}{Name}}">の $FORM{$SEARCH{1}{Name}}を、%e3%82%8a%e3%82%93%e3%81%94として、 つまり、<link rel="canonical" href="%e3%82%8a%e3%82%93%e3%81%94.htm"> としたいのですが、どのようなソースを書けば、実現できるのでしょうか? どうかアドバイスのほど、よろしくお願い致します。m(_ _)m

  • URLエンコードの仕方

    こんにちは。 HTMLとJavaScriptで検索サイトチックなものと製作しています。 テキストボックスに入力さえたキーワードをJavaScriptにて「URLエンコード」してあるURLとくっつけて、location.hrefで表示ページを変えてしまうというような事を考えています。 一例としまして・・・ url = "http:/www.mapfan.com/index.cgi?ADDR="; key = (エンコード document.myForm.C_Comodity_Add_1.Value); url = url + key; location.href = url; というように考えています。 どのようにしてやればいいのでしょうか??

  • リダイレクト時のURLクエリ文字列の取得

    hoge.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp" /> </head> <body> <script language="javascript"> <!--// function windowOpen() { window.open("hoge.php?name=" + document.getElementById("data").value, "new_window"); } --> </script> <input type="text" id="data" /> <input type="button" value="new window" onclick="windowOpen()" /> </body> </html> hoge.php <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp" /> </head> <body> <?php echo $_GET['name']; ?> </body> </html> このようなスクリプトがあった時(表示の際の文字コードは任意で)、 文字列をエンコードせずJavaScriptからURLをリダイレクトさせている為、 IE6では、PHP側の$_GET['name']が正常に受け取る事が出来ません。 (Firefoxではアクセスした時点で自動的にURLエンコードしてくれるので 問題ないのですが) これを、JavaScript側でURLエンコードさせてからリダイレクトさせるのではなく、 PHP側で回避させる為にはどういった作業をどういう手順で行えばいいのでしょうか?

    • ベストアンサー
    • PHP
  • preg_replace内+URLエンコード

    現在、 $hogehoge=preg_replace( "/([^,\(\)]+)/" , '<a href="./hoge.php?hoge=\1">\1</a>', $hoge); このように変数をそのままリンク処理しております。 現在はこの変数に1バイト文字のみしか入っていないのですが、今後2バイト文字も取り扱おうつもりですので、urlencode関数を使いURLエンコードを組み込みたく思います。 このままのカタチで組み込むことは可能でしょうか?

    • 締切済み
    • PHP
  • Ethnaを利用したURLパラメータのマルチバイト文字とエンコード処理

    前画面よりhttp://localhost/?action_abc=true&test=あいうえお という画面へアクセスした時、 abc画面でtestパラメータを出力すると何故かShift_JISで表示されてしまい、 文字化けを起こしてしまいます。 (前画面・abc画面のactionやview、テンプレートはEUC-JPで作成、 URLパラメータにはurlencode()、urldecode()を使用) その為、出力する前にmb_convert_encoding()を使用しなければならない羽目になっています。 EthnaかPHPの仕様上、URLパラメータは必ずShift_JISになってしまうのでしょうか? また同じ関係で、urlencode()をした時点で、IEだと%~%~・・・と全ての文字が エンコードされるのですが、Firefoxだとhtmlspecialchars()のような動作をし、 エンコードが上手く出来ません。 (Firefoxの仕様上、そのリンクを押した時点でマルチバイトはエンコードされるようですが) 正しくエンコード・デコードさせる方法としてはどうするのが良いのでしょうか? どなたかご教示願います。

    • ベストアンサー
    • PHP
  • どちらが正解ですか

    Windows,php4,html文での正解を教えてください look.phpから<A href=></A>の位置 例-A $body .= "<A href='view.php?no=" . $col["no"] . "' title='No=" . $col["no"] . "本文を表示します。'> <TD width='55%'><FONT color='#c0c0c0' size='-1'> <font color='#000000' size='-1'> $tmptitle </font></A>"; look.phpからview.phpへ掴んで飛ぶは機能しています search.phpへコピー移植したら、表示は問題ないのですが、掴んで飛ぶ部分が機能しませんでした 例-B $body .= "<FONT color='#c0c0c0' size='-1'> <TD width='55%'> <A href='view.php?no=" . $col["no"] . "' title='No=" . $col["no"] . "本文を表示します。'> <font color='#000000' size='-1'> $tmptitle </font></A>"; 上記のように並びを変更したら機能しました 記述の仕方としてはどちらが妥当な正解なのでしょうか 或いはまだ記述の仕方としては不備が有りますか

    • ベストアンサー
    • PHP