PHPで文字列の置き換えをする方法

このQ&Aのポイント
  • PHPで正規表現を使って文字列の置き換えをする方法について教えてください。
  • 例えば、指定したURLの一部を置き換えたい場合、どのようなコードを書けば良いのでしょうか。
  • また、置き換える文字列の中に特定のパターンがある場合、それを正しく処理する方法も知りたいです。
回答を見る
  • ベストアンサー

文字列の置き換え

はじめまして。正規表現とPHPで下記のような置き換えをしたいのですが、 どうしたら良いのでしょうか。 <a href="http://www.homepage.com/index.php?no=***">***</a> ↓置き換え <a href="javascript:Open('http://www.homepage.com/index.php?no=***')">***</a> ※***、***は毎回違うものが入りますが、その他の部分は全く同じです。 ※***は、半角英数字・「-」で構成されています。 文字数は色々です。 ※***は、かな・漢字などさまざまで、文字数も決まっていません。 よろしくお願い致します。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

単純な形式なら以下のような感じでどうでしょう? <?PHP $str=<<<eof <a href="http://www.homepage.com/index.php?no=***">***</a> eof; $str=preg_replace("/(<a href=\")(.*?)(\">)/","$1javascript:window.open('$2')$3",$str); print $str; ?> ただ、別ウインドウを開くならtarget="_blank"とかの方が スクリプトに頼らない分汎用性が高いかもしれません (target自体はあまり推奨されませんが)

rinco_001
質問者

お礼

出来ました! リンク先はポップアップでサイズ指定をして開くので、 Javascriptを使おうと思います。 勉強になりました、ありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

あ、よく考えたらhrefのとこだけ処理すればいーか $str=preg_replace("/href=\"(.*?)\"/","href=\"javascript:window.open('$1')\"",$str);

関連するQ&A

  • 正規表現による文字列のチェックについて

    文字列の入力チェックで困っています。 入力された文字列が以下の文字のみで構成されているか、正規表現でチェックするにはどうすれば良いか教えてください。 できれば一発でチェックしたいです。 ・全角(漢字、ひらがな、かたかな)※英数字を含め、左記以外の全角は使用禁止 ・半角英数字 ・半角記号(「-」「.」「:」「*」「&」)※後から追加変更される可能性がある Java(UTF-8)とJavaScript(Shift-JIS)それぞれで対応できる方法をお願いいたします。

  • 文字列全体に対する置き換え [正規表現]

    正規表現での文字列全体に対する、マッチ箇所 への置き換えについて、アドバイスをもらえないでしょうか。 parlでいうg修飾子はphpには無く、 例えば、[preg_match]は[preg_match_all]という関数で対応出来ますが、 置き換えを行う[preg_replace]には[preg_replace_all]がありません。 それに類する関数も無いように思います。 これに関して、PHPではどのように対応すれば良いのでしょうか。

    • ベストアンサー
    • PHP
  • GETメソッドで文字列として+を送信したい

    test.php <?php $id=$_GET["id"]; echo $id; ?> として、同ディレクトリ中のindex.html内にある、 <a href="./test.php?id=+あいうえお -かきくけこ +さしすせそ ">リンク</a> をクリックすると、test.phpでは 「あいうえお -かきくけこ さしすせそ」 と表示されてしまいます。 半角の+も文字列としてGETメソッドで一緒に送りたいのですが、この場合、a要素にはどのようなURLを記せばいいのでしょうか。

    • ベストアンサー
    • PHP
  • phpについて。文字列の長さを指定する方法

    test1.php で、 コード:[textbox] という項目を表示します。 textboxに打ち込んでほしいことは、必ず半角英数字6文字です。 ここの値をpostで飛ばす?あまり良くわからないのですが、 入力した後 test2.php にジャンプさせます。 もし、[textbox」内が半角英数字6文字でなければ、 ジャンプボタンを押したときに、 「コードは半角英数字6文字で入力してください」 というような表示をしたいのですが、できますでしょうか?? どなたか教えてください!!

    • ベストアンサー
    • PHP
  • VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています

    VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。 正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。 タグごと抽出する方法でも構わないので教えてください。 例えば <a href="www.yahoo.com△">○○○</a>   ・・・<1> ※△は(www.yahoo.com)+(半角数字1文字) ※○○○は1文字以上の全角文字 このようなパターンの文字列(<1>を丸ごと)を抜き出すには どのような正規表現を書けばよいでしょうか? 単に<a href ではじまって </a>  で終わる文字列であれば <a href.*</a> で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので ぜひ実現させたいと思っています。宜しくお願いします。

  • 正規表現で、全角文字を半角文字にする方法

    エディター等で使用できる、通常の正規表現で、例えば、全角文字を半角文字にする方法はありますでしょうか? ※つまり、PerlのtrやPHPのstrtrのようなことです。 例えば、正規表現対応のエディターで、サイト全体の全角英数字を半角英数字にするような処理をしたいのですが。

    • ベストアンサー
    • Perl
  • 部分文字列の置換

    お世話になります。 <A href="index.php?page=aaa/bbbbb/cccc.xls"> という文字列からindex.php?page=を削除して、 <A href="aaa/bbbbb/cccc.xls"> としたいのですが、よくわかりません。 ereg_replace() preg_replace() など、調べて挑戦しているのですが、できません。 おわかりになる方、教えていただけないでしょうか。

    • ベストアンサー
    • PHP
  • 正規表現 英数字を1つ以上含む文字列

    ASP.NET(VB)での入力チェックのために、 半角英数字「0~9」「a~z」「A~Z」と、ハイフン「-」からなる文字列 (ただし、半角英数字「0~9」「a~z」「A~Z」はそれぞれ少なくとも1個ずつ含む) の正規表現での表し方が知りたいです。  How To: ASP.NET への入力を制約するために正規表現を使用する方法  http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000001.aspx  (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$  8から10文字で、最低1文字の数字と1文字の英字を使用し、特殊文字を使用してはいけません。 上記を参考に、 (?!^[0-9]*$)(?!^[a-z]*$)(?!^[A-Z]*$)^([a-zA-Z0-9])$ こんな感じかなぁと試してみたのですが、ダメでした。 そもそも「!」の意味が分かりません。否定でしょうか??

  • 《excel or word》全角文字を検索して削除、もしくは半角文字のみを抜き出したい

    全角文字で書かれた、日本語の文があります。(一般的な文章ですので、文字数は勿論任意です) その中に、半角英数字8文字で書かれたID番号が点在しています。 (IDの前後の文字数、またひとつの分の総文字数は任意です) …という内容が一つのセルに入っていて、それが数千行あるエクセルのブックがあります。 この中から、半角英数字8文字のIDのみ、取り出したいのです。 (半角英数字はIDにしか使われていない、という認識です) 1)半角8桁の英数字だけ別セルに取り出す 関数で何とかならないかと思いましたが、ごく一般的な文章なので、IDの前後の文字数がバラバラで断念しました 2)全角文字のみ検索し、置き換えで削除する ワードにコピーしてやってみようと思いました。 2003なのですが、「任意の英数字」は検索できても、「任意の全角文字」の検索機能はないようです。 (「任意の文字」の項目が、全角文字に該当するのかと思い、検索置換をしてみたら、どうやら半角英数字も該当するようでした) 実際困っております。 何かいい手はないでしょうか。

  • 適当な文字列を作る

    PHPについてです。 半角英数字のみで、 「W94s45ed2sh2k892jngfDhJJ48」 のように適当な文字列を作りたいのですが、 どういった方法があるのでしょうか? ご教授いただけたら幸いです。

    • ベストアンサー
    • PHP