• ベストアンサー

任意の2バイト文字からなる文字列を、一括でURIに含め置換するには

【質問】 <td>鳥山明</td> <td>王貞治</td>・・・・ という文字列を <td><a href="http://ja.wikipedia.org/wiki/%E9%B3%A5%E5%B1%B1%E6%98%8E">鳥山明</a></td> <td><a href="http://ja.wikipedia.org/wiki/%E7%8E%8B%E8%B2%9E%E6%B2%BB">王貞治</a></td>・・・・ という風に置換したいのですが、最も簡単にやるにはどうすればいいのでしょうか。 【備考】 phpを使い、2バイト文字をascii文字にエンコードするようにコーディングすると、ページ全体のURIが.html から .phpに変わってしまい、いろいろと問題がでてきてしまうので、.htmlのURIを維持したまま満足する解決策を教えて欲しいのです。 phpのmod_rewriteを使えばよいのでしょうが、私はphpについてよくわからないので、できるだけ単純に満足させる解決策を教えていただきたいのです・・・。 【環境】手前の借りているサーバーはphp5のモジュールモード対応で、htaccessが変更可能とのことです。 【私がやったこと】 正規表現で <td>(...)</td> ↓ <td><a href="http://ja\.wikipedia\.org/wiki/$1">$1</a></td> に置換して <a href="http://ja.wikipedia.org/wiki/鳥山明">鳥山明</a> <a href="http://ja.wikipedia.org/wiki/王貞治">王貞治</a> のようにしました。 wikipediaで見られればよいので、当面はこれでも問題ないのですが、URIに2バイト文字が入っているので当然文法的には重大なエラーが残ってしまいます。 【私に学習できること】 遠回りになると思いますが後々役に立つと思うので、phpも多少勉強するつもりです。 どなたか、よろしくお願いいたします。

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

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

  • ベストアンサー
  • warez
  • ベストアンサー率57% (29/50)
回答No.2

置換はこんな感じでしょうか。 $pattern = '!(<td>)(.*?)(</td>)!e'; $replacement = "'<td><a href=\"http://ja.wikipedia.org/wiki/'.urlencode('$2').'\">$2</a></td>'"; $subject = "<td>鳥山明</td> <td>王貞治</td>"; echo preg_replace($pattern, $replacement, $subject); ファイル名の問題は .htaccess などで AddType を設定すればいけるのでは。

HeyJudy
質問者

お礼

ありがとうございます。 wikipediaのエンコードはUTF-8だったので http://q.hatena.ne.jp/1196772104 などを参考に $replacement = "'<td><a href=\"http://ja.wikipedia.org/wiki/'.mb_convert_encoding('$2', 'UTF-8', 'auto').'\">$2</a></td>'"; と書いてみたんですが、うまく動きませんでした。 よろしければ解決策を教えていただけないでしょうか。(>_<;)

その他の回答 (2)

  • warez
  • ベストアンサー率57% (29/50)
回答No.3

$subject = mb_convert_encoding("<td>鳥山明</td> <td>王貞治</td>", 'UTF-8', 'auto'); でどうでしょう。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

Perlなら $str =~ s/(\W)/'%' . unpack('H2', $1)/eg; ですが・・・

関連するQ&A

  • 日本語の文字列のみをURLエンコードする

    ある文字列の中から日本語の部分だけをURLエンコードしたいのですが、どのようにすれば良いのでしょうか。 例えば「http://ja.wikipedia.org/wiki/ウィキペディア」から「http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2」という形にURLエンコードする、という事です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 同じURL文字列のブラウザによる表示の差異

    Opera 11.64 を使用中です。 Firefox 12.0 で次のアドレスを表示して、 http://d.hatena.ne.jp/keyword/%A5%D6%A5%E9%A5%A6%A5%B6 そのアドレスをOperaにコピペすると次のようになってしまいます。 http://d.hatena.ne.jp/keyword/%A5֥饦%A5%B6 これはどうしてですか? もう一例を挙げると、、、 Firefoxでは次の通り、 http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6 しかしOperaでは↓このようになります。 http://ja.wikipedia.org/wiki/ウェブブラウザ よろしくお願いします

  • 民主党議員が在日は嘘!

    http://ja.wikipedia.org/wiki/%E8%8F%85%E7%9B%B4%E4%BA%BA http://ja.wikipedia.org/wiki/%E8%8F%85%E5%AF%BF%E9%9B%84 http://ja.wikipedia.org/wiki/%E8%8F%85%E5%AF%A6 ↑菅直人。 ↓鳩山由紀夫 http://ja.wikipedia.org/wiki/%E9%B3%A9%E5%B1%B1%E7%94%B1%E7%B4%80%E5%A4%AB http://ja.wikipedia.org/wiki/%E9%B3%A9%E5%B1%B1%E5%A8%81%E4%B8%80%E9%83%8E http://ja.wikipedia.org/wiki/%E9%B3%A9%E5%B1%B1%E4%B8%80%E9%83%8E http://ja.wikipedia.org/wiki/%E9%B3%A9%E5%B1%B1%E5%92%8C%E5%A4%AB http://ja.wikipedia.org/wiki/%E9%B3%A9%E5%B1%B1%E5%A8%81%E4%B8%80%E9%83%8E 普通に日本人じゃね? どこから在日って流れになったんですか?

  • 文字列を歪める技術

    『CAPTCHA認証の字体( http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Captcha.png )』は、 どういう手段で作成されているのでしょうか?

  • 行きずりの旅をするならどの偉人?

    平安、鎌倉時代に旅して回っていた偉人を教えてくだい、という内容で質問をしましたところ、(http://okwave.jp/qa/q7281201.html) 西行法師(http://ja.wikipedia.org/wiki/%E8%A5%BF%E8%A1%8C%E6%B3%95%E5%B8%AB 後深草院二条(旅してる?)(http://ja.wikipedia.org/wiki/%E5%BE%8C%E6%B7%B1%E8%8D%89%E9%99%A2%E4%BA%8C%E6%9D%A1 重源(http://ja.wikipedia.org/wiki/%E9%87%8D%E6%BA%90 一遍(http://ja.wikipedia.org/wiki/%E4%B8%80%E9%81%8D 覚明(http://ja.wikipedia.org/wiki/%E8%A6%9A%E6%98%8E 阿仏尼(http://ja.wikipedia.org/wiki/%E9%98%BF%E4%BB%8F%E5%B0%BC 藤原実方(http://ja.wikipedia.org/wiki/%E8%97%A4%E5%8E%9F%E5%AE%9F%E6%96%B9 空也上人(http://ja.wikipedia.org/wiki/%E7%A9%BA%E6%B5%B7 琵琶法師(http://ja.wikipedia.org/wiki/%E7%90%B5%E7%90%B6%E6%B3%95%E5%B8%AB 紀貫之(http://ja.wikipedia.org/wiki/%E7%B4%80%E8%B2%AB%E4%B9%8B などをあげていただきました。 そこで、旅に付き添うなら、どの偉人がいいですか? この時代の旅になどつきあいたくないかも知れませんが、当時の人間だったとして旅につきそうならということで。 上記以外にも、平安時代~鎌倉時代に旅をした人物なら教えていただきたいです。(贅沢を言えば平安後期~鎌倉初期が理想的) ちなみに行きずりと書いたのは、創作の中では時々遭遇してちょっと旅を共にする、くらいの役柄で登場するキャラクターにしたいからです。 日本語が下手ですみません。ご意見お聞かせください。

  • 英文字を含む文字列のURIエンコードについて

    宜しくお願いいたします。 以下のサイトでHTMLソースの一部をURIエンコードして、javascriptでデコード・書き戻して利用する方法についての記述を見つけました。 http://ameblo.jp/azuki-milk-lush/entry-10559249105.html このページには、以下のようにエンコードされている事例が掲載されています。 document.write('<a href="mailto:メールアドレス">お問い合わせ</a>'); ↓ %64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%61%20%68%72%65%66%3D%22%6D%61%69%6C%74%6F%3A%73%75%70%70%6F%72%74%40%73%74%61%2D%6C%6F%67%2E%63%6F%6D%22%3E%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%3C%2F%61%3E%27%29%3B 上記では一見アルファベットも識別できないような形でエンコードされています。 早速このページで紹介されている変換サービスサイトで、実験をしてみたのですが、同じような結果にはなりません。 http://itsd210.s24.xrea.com/ja/urlencode/ 【▼こうなってしまう▼】 document.write('<a href="mailto:メールアドレス">お問い合わせ</a>'); ↓ document.write('%3Ca%20href%3D%22mailto%3A%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%22%3E%E3%81%8A%E5%95%8F%E3%81%84%E5%90%88%E3%82%8F%E3%81%9B%3C%2Fa%3E')%3B 一見してアルファベットも識別できないような変換はどのようにすれば行えるのでしょうか? 詳しい方がいらっしゃいましたら、ご教示願います。 何卒、宜しくお願い申し上げます。

    • ベストアンサー
    • HTML
  • 福祉の充実した国家での問題点は?

    福祉の充実した国には、 フィンランド ・ デンマーク ・ ノルウェー ・ スウェーデン がありますが、 こうした国が国内で抱えている問題にはどんなものがあるのでしょうか? 各国ごとに詳しく教えて下さると助かります。 参考 http://ja.wikipedia.org/wiki/%E7%A6%8F%E7%A5%89%E5%9B%BD%E5%AE%B6%E8%AB%96#.E7.A6.8F.E7.A5.89.E3.83.AC.E3.82.B8.E3.83.BC.E3.83.A0.E8.AB.96 http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%A6%E3%82%A7%E3%83%BC%E3%83%87%E3%83%B3#.E7.A6.8F.E7.A5.89 http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%B3%E3%83%A9%E3%83%B3%E3%83%89 http://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%AB%E3%82%A6%E3%82%A7%E3%83%BC http://ja.wikipedia.org/wiki/%E3%83%87%E3%83%B3%E3%83%9E%E3%83%BC%E3%82%AF

  • 朝日新聞検証の第三者委員会に田原総一郎氏に

    ■朝日新聞、第三者委に田原総一朗さんら7人決定 慰安婦報道で http://www.sankei.com/affairs/news/141002/afr1410020039-n1.html 委員長 中込秀樹http://ja.wikipedia.org/wiki/%E4%B8%AD%E8%BE%BC%E7%A7%80%E6%A8%B9 委員  田原総一朗http://ja.wikipedia.org/wiki/%E7%94%B0%E5%8E%9F%E7%B7%8F%E4%B8%80%E6%9C%97 岡本行夫http://ja.wikipedia.org/wiki/%E5%B2%A1%E6%9C%AC%E8%A1%8C%E5%A4%AB 北岡伸一http://ja.wikipedia.org/wiki/%E5%8C%97%E5%B2%A1%E4%BC%B8%E4%B8%80 波多野澄雄http://ja.wikipedia.org/wiki/%E6%B3%A2%E5%A4%9A%E9%87%8E%E6%BE%84%E9%9B%84 林香里http://www.nippon.com/ja/authordata/hayashi-kaori/ 保阪正康http://ja.wikipedia.org/wiki/%E4%BF%9D%E9%98%AA%E6%AD%A3%E5%BA%B7   ↑ この方達って、第三者ですか? ど~見てもべったりな身内にしか見えないんですけど? せめて産経記者とかを入れるべきではないのでしょうか? なんか、朝生的な解決で終わりそうな気がします。

  • 閘門と水斜面の違い

    調べものをしていたら、 「閘門 (http://ja.wikipedia.org/wiki/%E9%96%98%E9%96%80)」と 「水斜面 (http://ja.wikipedia.org/wiki/%E6%B0%B4%E6%96%9C%E9%9D%A2)」 の二つの用語に出くわしました。 同じようなものに思うのですが、違いがわかる方いらっしゃいますか。

  • 抽象的だと分かり難いですから、教えて下さい。

    『仕掛かり品( http://ja.wikipedia.org/wiki/%E4%BB%95%E6%8E%9B%E5%93%81 )』と『半製品( http://ja.wikipedia.org/wiki/%E5%8D%8A%E8%A3%BD%E5%93%81 )』との具体例を紹介して下さいませ。

専門家に質問してみよう