• 21-11-2009, 21:58:17
    #1
    Üyeliği durduruldu
    Merhaba Ustadlar.


    <meta name="keywords" content="keyword1,keyword2,keyword3" />
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3" />
    <META name="keywords" CONTENT="keyword1,keyword2,keyword3" >

    gördüğünüz gibi yazılışlarda büyük küçük harf değişimi ve sonda / karakteri olup olmaması gibi bir durum söz konusu.

    amacımız content içindeki kısmı sorunsuz almak.

    bu ifadeyi phpde düzenli ifade ile (regex) nasıl oluşturuyoruz?
  • 21-11-2009, 22:14:25
    #2
    Üyeliği durduruldu
    $data = '
    <meta name="keywords" content="keyword1,keyword2,keyword3" />
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3" />
    <META name="keywords" CONTENT="keyword1,keyword2,keyword3" >
    ';
    
    preg_match_all('#<meta\s+name\s*=\s*["\'](.*?)["\']\s+content\s*=\s*["\'](.*?)["\'][/\s]*>#si', $data, $cikti);
    
    echo '<pre>';
    print_r($cikti);
    çıktı;

    Array
    (
        [0] => Array
            (
                [0] => 
                [1] => 
                [2] => 
                [3] => 
                [4] => 
            )
    
        [1] => Array
            (
                [0] => keywords
                [1] => keywords
                [2] => keywords
                [3] => keywords
                [4] => keywords
            )
    
        [2] => Array
            (
                [0] => keyword1,keyword2,keyword3
                [1] => keyword1,keyword2,keyword3
                [2] => keyword1,keyword2,keyword3
                [3] => keyword1,keyword2,keyword3
                [4] => keyword1,keyword2,keyword3
            )
    
    )
  • 22-11-2009, 11:36:41
    #3
    Eposta Aktivasyonu Gerekmekte
    Yada
    <?php
    
    $data = '<meta name="keywords" content="keyword1,keyword2,keyword3" />
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3" />
    <META name="keywords" CONTENT="keyword1,keyword2,keyword3" >';
    
    
    preg_match_all('#="keywords" content="(.*?)"#si',$data,$veri);
    
    echo '<pre>';
    print_r($veri[1]);
    ?>

    çıktı
    Array
    (
        [0] => keyword1,keyword2,keyword3
        [1] => keyword1,keyword2,keyword3
        [2] => keyword1,keyword2,keyword3
        [3] => keyword1,keyword2,keyword3
        [4] => keyword1,keyword2,keyword3
    )
  • 23-11-2009, 01:24:51
    #4
    Üyeliği durduruldu
    NiZZo_ adlı üyeden alıntı: mesajı görüntüle
    Yada
    <?php
    
    $data = '<meta name="keywords" content="keyword1,keyword2,keyword3" />
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3">
    <META NAME="keywords" CONTENT="keyword1,keyword2,keyword3" />
    <META name="keywords" CONTENT="keyword1,keyword2,keyword3" >';
    
    
    preg_match_all('#="keywords" content="(.*?)"#si',$data,$veri);
    
    echo '<pre>';
    print_r($veri[1]);
    ?>
    çıktı
    Array
    (
        [0] => keyword1,keyword2,keyword3
        [1] => keyword1,keyword2,keyword3
        [2] => keyword1,keyword2,keyword3
        [3] => keyword1,keyword2,keyword3
        [4] => keyword1,keyword2,keyword3
    )
    Bunu almaz verdiğiniz kod çünki tek tırnak için yazmışsınız, tek ve çift toleranslı regex şart.
    <META NAME='keywords' CONTENT='keyword1,keyword2,keyword3'>
  • 23-11-2009, 05:21:06
    #5
    get_meta_tags ile alabilirsin regex e gerek yok.
  • 23-11-2009, 05:28:36
    #6
    zoizo adlı üyeden alıntı: mesajı görüntüle
    get_meta_tags ile alabilirsin regex e gerek yok.

    <?php
    // Assuming the above tags are at www.example.com
    $tags = get_meta_tags('http://www.example.com/');
    
    // Notice how the keys are all lowercase now, and
    // how . was replaced by _ in the key.
    echo $tags['author'];       // name
    echo $tags['keywords'];     // php documentation
    echo $tags['description'];  // a php manual
    echo $tags['geo_position']; // 49.33;-86.59
    ?>
  • 23-11-2009, 07:52:29
    #7
    Eposta Aktivasyonu Gerekmekte
    devturkeli adlı üyeden alıntı: mesajı görüntüle
    Bunu almaz verdiğiniz kod çünki tek tırnak için yazmışsınız, tek ve çift toleranslı regex şart.
    Yukardaki veriye göre yazdım ve yukarda istediği verileri gayet rahat alır.
  • 23-11-2009, 07:59:13
    #8
    Üyeliği durduruldu
    NiZZo_ adlı üyeden alıntı: mesajı görüntüle
    Yukardaki veriye göre yazdım ve yukarda istediği verileri gayet rahat alır.
    evet alır fakat yinede php get_meta_tags fonksiyonu yada toleranslı regex daha iyidir.