• ベストアンサー

正規表現での置換方法

http://www.google.co.jp/aaaaa?a=1 上記のようなURLがあった時に、 <a href="http://www.google.co.jp/aaaaa?a=1" >http://www.google.co.jp/aaaaa?a=1</a> と置き換えたいのですが、正規表現とpreg_replaceで表現する場合どうしたら良いでしょうか? a=1 の後に </a>を付ける条件は半角スペースor改行を条件にしたいので (\s|\n)のようにすると思うのですが、どう表現したら良いでしょうか。 よろしくお願いします。

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

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

  • ベストアンサー
  • kichi8000
  • ベストアンサー率41% (658/1581)
回答No.1

PHP Regex Generator http://phpreg.1weekhack.com/preg_replace <?php $string = 'http://www.google.co.jp/aaaaa?a=1 '; $pattern = '/(http:[\/][\/][^\s|^\n]+)/'; $replacement = '<a href="\1" >\1</a>'; echo preg_replace($pattern, $replacement, $string); ?> で、どうでしょう。

関連するQ&A

  • 正規表現の書き方について

    $a=aaaaaaあああ1111いいい2222; 上記の$aを <br>aaaaa<br>aあああ<br>1111いいい<br>22222<br> このようにしたいのですが、 条件1:半角英数字の頭に<br> 条件2:半角英数字が5つ続いたら<br> としたいのですが、正規表現の記述方法で悩んでいます。 $b=preg_match([a-zA-Z0-9],$a)がに該当したら これで受け取ったものをpreg_replace<br>で挟む?のでしょうか。 そもそも条件は1つ以上指定できないのかもしれませんが・・・。 何かご存知の方いましたらご教授お願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現でURLだけを取り出したい

    正規表現でURLだけを取り出したいのですが、うまくできなくて困っています。 あああああ http://www.yahoo.co.jp abcdefg if ($_=~/(.*)http(.*)[  \n](.*)/){ print $2 } とやると http://www.yahoo.co.jp abcdefg となってしまいます。 http://www.yahoo.co.jp だけを取りたいのですが・・・ []のなかは 半角スペース、全角スペース、改行 です。

    • ベストアンサー
    • Perl
  • phpでpreg_replaceで次のような条件の文字を置換したいのですが…

    <a href="jump?url= *1 " target="_blank"> *2 </a> というAタグになっている文字列を *2 だけのテキストにしたいと思っています。 preg_replaceでの正規表現での条件がわかりません…。

    • ベストアンサー
    • PHP
  • 正規表現での置換について

    いつもお世話になっております。 ===例=== <a href="index.html">TEST1</a><br /> <a href="index.html?test=b">TEST2</a><br /> <a href="index.html?uid=NULLGWDOCOMO">TEST3</a><br /> <a href="index.html?test=a&uid=NULLGWDOCOMO">TEST4</a><br /> PHPのpreg_replaceを用いて リンクのパラメータに、uid=NULLGWDOCOMOがなければ付加したいのですが、 さっぱり方法がわかりません。 上記の例で、TEST1のリンクの場合は、TEST3 のように、 TEST2のリンクの場合はTEST4のようにしたいです。 もともとTEST3、TEST4のようにキーが付いてるケースもあり、そのときは無視です。 正規表現にお詳しい方よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現について

    HTMLファイルを読み込み、特定の文字列にリンクを付けて出力したいのですが上手くいきません。 例: <img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に正規表現を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。  ↓正規表現をキーワードにしてリンクを付けたい。 正:<img src="./seiki_hyougen.gif" alt="正規表現についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html">正規表現の詳しい説明</a>をクリックして下さい。 誤:<img src="./seiki_hyougen.gif" alt="<a href="seiki_hyougen.html">正規表現</a>についての説明">更に<a href="seiki_hyougen.html">正規表現</a>を知りたい方は、<a href="special.html"><a href="seiki_hyougen.html">正規表現</a>の詳しい説明</a>をクリックして下さい。 尚、下記URLのサンプルを参考にしてスクリプトを作成しています。 http://php.oss.eznetsols.org/manual/ja/function.preg-split.php $r = preg_split('((\/a>)|(<a))', $html, -1, PREG_SPLIT_DELIM_CAPTURE); for ($i = 0; $i < count($r); $i++) { if ($r[$i] == "<a") { $i++; continue; } $r[$i] = preg_replace( "/(正規表現)/i", "<a href='seiki_hyougen.html'>\\1</a>", $r[$i] ); } return join("", $r); この(正規表現)の部分で上手い正規表現を使えばalt="×××"の中にリンクタグが入らないようにできるのでは?と思っているのですが・・・。 どうか、良い方法を教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • タグの中の改行文字を正規表現で削除したい

    たとえば、 <a href="~" target="_blank"> というタグの中の改行文字(\n)を削除する正規表現を教えてください。 ただし、preg_replace_callbackは使わないでください。

    • 締切済み
    • PHP
  • http://とhttps://のどちらでもマッチングできる正規表現

    http://とhttps://のどちらでもマッチングできる正規表現の書き方が分かりません。aタグの中のhref="のあとのURL部分にhttpでもhttpsのどちらでもOKのマッチングをかけたいです。 具体的にはhttp://www.aaa.co.jpでもhttps://www.aaa.co.jpのどちらでもpreg_match_allでマッチングをかけたいです。 $count=preg_match_all("正規表現",$URL,$maches); という感じでhttpかhttpsのURLに引っ掛けたいです。 教えてください

    • ベストアンサー
    • PHP
  • 正規表現で一発置換できるでしょうか?

    サイトにあるHTMLを読み込み、その中のリンク全てに target指定を追加して表示するPHPについてアドバイスをお願いします。 取込元のHTMLは↓な記述(全リンクにtarget指定は無い)  … <a href="http://bakubaku.com">ばくばく</a> …  … <a href="http://mogumogu.net">もぐもぐ</a> …  … <a href="http://karikari.org">かりかり</a> … これを、↓のように変換して出力したい  <a href="http://bakubaku.com" target="_brank">ばくばく</a>  <a href="http://mogumogu.net" target="_brank">もぐもぐ</a>  <a href="http://karikari.org" target="_brank">かりかり</a> とりあえず、  ・<a href…> のリストを preg_match_allで 抽出  ・要素数だけ 末尾の > を target="_brank"> に変換/入替 といった処理で結果は正しく出ますがパフォーマンス的に痛いですよね。 このような検索置換処理を、正規表現を使って、一発でできないものでしょうか? (すみません、、正規表現よく分かっていません、、)

    • ベストアンサー
    • PHP
  • 正規表現を利用した文字列置換

    javaにて、正規表現を利用して、半角・全角スペース、改行のみで形成されている文字列を空文字にしたいのですが、どのような正規表現を作成すればよろしいでしょうか?

    • ベストアンサー
    • Java
  • 正規表現でpreg_系を使ってタグ内は置き換えないようにする方法

    正規表現でpreg_系を使って、半角スペースを&nbsp;に置き換える処理をしたのですが、タグ内のスペースも&nbs;に置き換わってしましました。 タグ内は置き換えないようにするにはどのようにしたら良いでしょうか? データは複数行渡っています。以下はタグが置き換わるので、逆にタグでないものを置き換えたいです。 <?php function test_call($matches){ return str_replace(" ","&nbsp;",$matches[0]); } $data = <<< EOT この横は変換 します。 <a href="http://www.yahoo.co.jp/" target="_blank">タグの半角スペースは変換せず、 この横は変換する。 </a> このタグも変換してはいけません。< br/> EOT; $data = preg_replace_callback('/<("[^"]*"|\'[^\']*\'|[^>])*>[ ]?/', "test_call", $data); var_dump($data); ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう