- 締切済み
正規表現について
正規表現について勉強しているのですが、 $aaa = "http://あいうえお.こむ/"; $bbb = "http://www.あいうえお.こむ/"; $ccc = "あいうえお.こむ/"; 同じドメイン名ですが、それぞれ変数に入っている値は違います。 これらのドメイン部分を取り出す正規表現はどのようになるのでしょうか。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- ralf124c
- ベストアンサー率52% (232/446)
申し訳ありません。PHPのカテなのをすっかり忘れてました。 $ccc = "http://www.abc.com/"; preg_match('!(.*:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!',$ccc,$aDATA); echo $aDATA[3];
- ralf124c
- ベストアンサー率52% (232/446)
前のだとプロトコル指定がHTTPか無しか限定になってしまうので $aaa =~ m!(.*:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!; が正しいかも ちなみにPerlの正規表現です。
- ralf124c
- ベストアンサー率52% (232/446)
こんなのでいいのですか? $aaa =~ m!(http:)?(//)?([^:/]*)?(:([0-9]+)?)?(/.*)?!; if($3){ $host = $3; } ## ホスト・ドメイン名(FQDN) if($5){ $port = $5; } ## ポート番号 if($6){ $path = $6; } ## パス名
- dell_OK
- ベストアンサー率13% (766/5720)
正規表現についてはよく知りませんが、 ドメイン部分と言われている部分をを取り出す、と言うだでけしたら、 こんな感じになるのでしょうか。 <?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)
「http://」で始まるurlならひろえますが、$cccの場合は ただの文字列なので無理・・・ またドメインとは何を指しているのかあいまい。 FQDNを得たいということでしょうか? 正規表現の勉強ということであればもう少し簡単な例からトライなさった 方がよいですよ。
- yambejp
- ベストアンサー率51% (3827/7415)
ひらがなで?
補足
サンプルはひらがなで書きましたが、実際は半角英数でお願いします。
お礼
アドバイスありがとうございます。 $aaaと$bbbでの場合を教えて頂けますか?