• 締切済み

正規表現について

正規表現について勉強しているのですが、 $aaa = "http://あいうえお.こむ/"; $bbb = "http://www.あいうえお.こむ/"; $ccc = "あいうえお.こむ/"; 同じドメイン名ですが、それぞれ変数に入っている値は違います。 これらのドメイン部分を取り出す正規表現はどのようになるのでしょうか。

みんなの回答

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.6

申し訳ありません。PHPのカテなのをすっかり忘れてました。 $ccc = "http://www.abc.com/"; preg_match('!(.*:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!',$ccc,$aDATA); echo $aDATA[3];

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.5

前のだとプロトコル指定がHTTPか無しか限定になってしまうので $aaa =~ m!(.*:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!; が正しいかも ちなみにPerlの正規表現です。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.4

こんなのでいいのですか? $aaa =~ m!(http:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!; if($3){ $host = $3; } ## ホスト・ドメイン名(FQDN) if($5){ $port = $5; } ## ポート番号 if($6){ $path = $6; } ## パス名

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.3

正規表現についてはよく知りませんが、 ドメイン部分と言われている部分をを取り出す、と言うだでけしたら、 こんな感じになるのでしょうか。 <?php function abc($str){ $str = str_replace("http://www.","",$str); $str = str_replace("http://","",$str); $str_ex = explode("/",$str); return $str_ex[0]; } $aaa = "http://あいうえお.こむ/"; $bbb = "http://www.あいうえお.こむ/"; $ccc = "あいうえお.こむ/"; $aa = abc($aaa); $bb = abc($bbb); $cc = abc($ccc); echo $aa."←".$aaa."<br>"; echo $bb."←".$bbb."<br>"; echo $cc."←".$ccc."<br>"; ?> ドメイン部分より前方には、 http://www1.https://www. など他のパターンも増えてくると思うので、 それを簡単に増やせるようにするとこうなるのかな。 <?php function abc($str){ $pattern[0] = "http://www."; $pattern[1] = "http://www1."; $pattern[2] = "https://www."; $pattern[3] = "http://"; foreach ($pattern as $pat){ $str = str_replace($pat,"",$str); } $str_ex = explode("/",$str); return $str_ex[0]; } $aaa = "http://あいうえお.こむ/"; $bbb = "http://www.あいうえお.こむ/"; $ccc = "あいうえお.こむ/"; $aa = abc($aaa); $bb = abc($bbb); $cc = abc($ccc); echo $aa."←".$aaa."<br>"; echo $bb."←".$bbb."<br>"; echo $cc."←".$ccc."<br>"; ?> 正規表現の事がわかっていないのに回答してすみません。 この増えていく部分を人間が増やさなくても、 自動で処理してくれる事なのかな。

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

「http://」で始まるurlならひろえますが、$cccの場合は ただの文字列なので無理・・・ またドメインとは何を指しているのかあいまい。 FQDNを得たいということでしょうか? 正規表現の勉強ということであればもう少し簡単な例からトライなさった 方がよいですよ。

tkc59
質問者

お礼

アドバイスありがとうございます。 $aaaと$bbbでの場合を教えて頂けますか?

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

ひらがなで?

tkc59
質問者

補足

サンプルはひらがなで書きましたが、実際は半角英数でお願いします。

関連するQ&A