• ベストアンサー

PHPでurlから第4レベルドメインを消すには

preg_replace()で第4レベルドメインを消したいのですが正規表現の部分が分かりません。 ご存知の方がいらっしゃいましたら、教えていただきたいです。 例) openlab.ring.gr.jp を ring.gr.jp に

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

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

たとえばこんな感じ? <? $url="www.xxx.yyy.zzz.openlab.ring.gr.jp"; $pattern="/.+\.(?=(.+?\.){2}.+$)/"; print preg_replace($pattern,"",$url); ?> {2}を増減させればレベルをあげさげできます

shintaaarooo
質問者

お礼

まさにその正規表現です!! 勉強不足ですいません、正規表現は苦手でして。 ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • URL からドメイン名

    <?php preg_match('@^(?:http://)?([^/]+)@i', "http://www.hogehoge.net/index.html", $matches); $host = $matches[1]; preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo $matches[0]"; ?> 上記だと、co.jpや ne.jpなどの場合うまく行きません。 正規表現もいまいちわかっていないのですが、 $host情報にco.jpなどを含む場合はこれでpreg_match()みたいな方法はないでしょうか?

    • 締切済み
    • PHP
  • PHPコメントアウト

    /* これで複数行コメントアウト できますが、 */ /* $hoge = preg_replace("/[0-9]*/","",$str); */ こいつの正規表現部分でコメント行が止まるんです。 個別に // でその行コメントアウトすれば良いんですが、なんか悔しいので方法無いかなと思いまして。

    • ベストアンサー
    • PHP
  • PHPで

    1. $html = preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); return $html; と return preg_replace( '/(height|width)="\d*"\s/', "", $html ); の '/ class=[\'"]([^\'"]+)[\'"]/i' と '/(height|width)="\d*"\s/' の結果はどっちも中身を空欄にするのですが、なぜ=の右の表現方法が違いますか? 意味はどう違いますか? 2. それから、 $html = preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); は return preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); でも意味は同じですか? return $html;を使ったほうがいいですか? 3. それから '', $html と "", $html の意味は同じですか?

    • ベストアンサー
    • PHP
  • 【PHP】preg_replace() で正規表現が正常に動かない?

    PHP5利用者です。 preg_replace() が思い通りに動かないため困っています。 マルチバイト文字及び正規表現を使おうとした場合動作がおかしいのです。例えば、 「 . 」は任意の1文字とされていますが、 $str = preg_replace("/第.回/", "第3回", "今日は第*回目です。"); 等と書いても何も置換されません。 これは一体どういうことなのでしょうか? 文字コードはUTF-8です。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • URLからドメイン名の抽出する

    URLからドメイン名を抽出するよいライブラリはないでしょうか? (例) http://www.domain.co.jp/~username/dafult.htm          ↓ domain.co.jp 正規表現で簡単に出来そうですが、 .jp .co.jp .co.uk .com.uk 等、一筋縄ではいかないようです。 どうかよろしくお願い致します。

    • ベストアンサー
    • Perl
  • preg_replaceでの正規表現について

    お世話になります。 ereg_replace で書いた正規表現による置換処理を、 preg_replace に置き換えようとしています。 (preg_replaceの方が処理が速いとマニュアルにあったので) ところが、preg_replaceでの正規表現検索がうまくいかないで困っています。 基本的には、ereg_replaceの正規表現部分を//で囲んでいるだけです。 具体的には、下記のような処理を書いています。 間違いがあれば、ご指摘いただけましたら幸いです。 //### うまくいっている ereg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='\{dokuji tag\}.+\{_dokuji tag\}'; $replace=''; $html=ereg_replace($search,$replace,$html); //不要部分の削除 //### うまくいっている ereg_replace のパターン ここまで ### ↓ //### うまくいかない preg_replace のパターン ここから ### $html=file_get_contents('template/temple.html'); //ひな形読み込み $search='/\{dokuji tag\}.+\{_dokuji tag\}/m'; $replace=''; $html=preg_replace($search,$replace,$html); //不要部分の削除 //### うまくいかない preg_replace のパターン ここまで ### //### 置き換えるソース('template/temple.html') ここから ### <!-- {dokuji tag} --> <tr> <td nowrap><strong>タイトル:</strong></td> <td> <input type="text" name="name" size="80" value="{name}" /> </td> </tr> <!-- {_dokuji tag} --> //### 置き換えるソース('template/temple.html') ここまで ### よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • PHPのpreg系正規表現が正しいかチェックる方法

    お世話になります PHPのpreg系正規表現で入力された値が 正規表現として正しいかどうか調べたいのですが どのようにすれば良いのでしょうか? 「正しい」とは 導き出したい値が正しいかではなく 正規表現の記述方法が正しいかどうかです 「[]」と「{}」が正しく閉じているかチェックするだけでいいのかな?? チェック用の関数などあったら最高です (例) 正しい [0-9]{1,3} 上記をpreg系関数に入れると1~3文字の半角数字という意味になります 誤っている [0-9{1,3} 上記をpreg系関数に入れると、括弧が閉じていないので Compilation failedになります お忙しい中恐縮ですが 分かる方お助け下さいませ

    • ベストアンサー
    • PHP
  • 正規表現文字列をDB登録

    正規表現に詳しくないことと、PHPも携わったばかりなので、苦戦しています。ご教授いただけると助かります。 以下のようなことをやろうとしています。 1.フォームで入力された正規表現を文字列としてDBに登録していきます。 例{http://[w-.]*test_site.jp}i 2.登録データを取り出して、preg_replace()を使いたいです $url_text = {http://[\w\-.]*test_site\.jp}i $db_data ←1のデータ(配列になってます) preg_replace($db_data, '', $url_text, -1) そうすると、$db_dataの中身は\がないために、エラーとなります。 Warning: preg_replace(): Compilation failed: range out of order in character class at offset 10 DBから取得した後に、変換するような関数などあるんでしょうか。 それとも他の方法を探したほうがよいのでしょうか。 一致したものを省きたいような処理なのですが・・・。 ためしにpreg_quote()をかけてみましたが変な風に置換されてダメでした。 うまく説明もできなくて申し訳ないですが、何か良い案ありますでしょうか。 必要であれば、補足いたします。 ぜひお願いいたします。

    • ベストアンサー
    • PHP
  • URLのサブドメインとドメイン部分の取得

    PHPのpreg_matchでURLのサブドメイン部分とドメイン部分を取得したいのですが、どのように書けばよいでしょうか? たとえば、「http://www.example.com/index.html」だった場合、 「www」と「example.com」を取得して、 「http://sample.www.example.co.jp」だった場合は、 「sample.www」と「example.co.jp」が取得したいと考えています。

    • 締切済み
    • PHP
  • 正規表現

    正規表現でドメインの取得 http://auctions.yahoo.co.jp/ http://yahoo.co.jp/ http://www.yahoo.co.jp/ 上記のURLのような場合にyahoo.co.jpの部分を抜き取りたいと考えています。 どのような正規表現を書けばいいか分かりません。 http://php.s3.to/man/function.preg-match.html こちらを参考にしました。 comなどなら問題ないのですが、co.jpなどはうまくいきませんでした。