1. Halo Guest, pastikan Anda selalu menaati peraturan forum sebelum mengirimkan post atau thread baru.

[ASK] Code preg_replace untuk menghilang URL dengan kriteria seperti ini.

Discussion in 'Pemrograman Web' started by bosspulsa, May 26, 2013.

  1. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    Selamat Malam semuanya...

    Sudah lama saya tidak membuat thread kali ini, saya yang lagi belajar php ingin menanyakan pertanyaan tentang PHP khususnya preg_replace.

    Langsung saja, misalnya saya ingin menghapus url dengan preg_replace, misalnya urlnya seperti ini:
    <a href ="url">Privacy Policy</a> atau <a href="url">Website privacy policy</a>,

    Saya ingin menghapus url yang diawali dengan <a href dan diakhiri dengan </a> dan anchor teks mengandung kata privacy atau Privacy (in-case sensitive) caranya gimana ya? kode phpnya?

    Terima Kasih...
     
  2. ddr1986

    ddr1986 Super Hero

    Joined:
    Oct 2, 2011
    Messages:
    1,172
    Likes Received:
    461
    Location:
    Juventus Stadium
    PHP:
    $kodestr_replace("href","",$kode);
    $kodestr_replace("privacy","",$kode);
    $kodestr_replace("Privacy","",$kode);
    bener gak si...
    pernah coba buat ilangin url si pake str replace hasilnya mati...
    maafin klo salah, lg belajar codcodan soale :(
     
    bosspulsa likes this.
  3. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    Kalau cara ini menghapus string privacy dan string href saja mas... masih menyisakan kata-kata lain...

    Ada masukan dari Abi Zaka di FB seperti ini:

    PHP:
    preg_replace("@<a(.*)Website privacy policy</a>@isU""Kata_ganti","Kalimat_yang_akan_direplace");
    Nanti ane coba dan ane update kalau berhasil atau tidaknya
     
  4. xenovesta

    xenovesta Super Hero

    Joined:
    Sep 1, 2010
    Messages:
    857
    Likes Received:
    11

    kayanya ntu bakalan error deh .
     
  5. ddr1986

    ddr1986 Super Hero

    Joined:
    Oct 2, 2011
    Messages:
    1,172
    Likes Received:
    461
    Location:
    Juventus Stadium
    str replace href iya mas ada sisa, tp url mati
    sisa cuma pas view source saja.. jd gak masalah..
    klo buat saya yg penting url link asliny mati
     
  6. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    ane pakai strip_tags mas kalau itu mas.... ini emang sangaja latihan preg_replace, btw makasih atas diskusinya....
     
  7. gudel

    gudel Ads.id Pro

    Joined:
    Dec 13, 2012
    Messages:
    269
    Likes Received:
    24
    Code:
    <?php
    $string = '<a href="url">Website privacy policy</a> | <a href ="url">Privacy Policy</a>';
    preg_replace('#<a href="[^>]*>#','',$string);
    $string = str_replace('</a>','',$string);
    echo $string;
    ?>
    
     
    bosspulsa likes this.
  8. nnttoo

    nnttoo Super Hero

    Joined:
    Apr 16, 2010
    Messages:
    1,260
    Likes Received:
    620
    contoh di regex dari tag <a sampai close,,
    PHP:
    #<a[^<]*privacy[^<]*</a>#
    PHP:
    <?php$f '<a href ="url">Privacy Policy</a>aku dan kam';echo preg_replace('#<a[^<]*Privacy[^<]*</a>#','',$f);
    hasil:

    PHP:
    aku dan kam
     
    Last edited: May 26, 2013
    bosspulsa likes this.
  9. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    Code berjalan 90%, tidak jalan secara in-case sensitive, pada eBOOK dan CONTACT, untuk menghilangkan harus ditulis sesuai yaitu eBOOK dan CONTACT? bagaimana agar cukup ebook dan contact namun bisa menghapus baik eBook, eBOOK, EBOOK, eBooK, maupun contact, Contact, CONTACT dan sebagainya.

    Terima kasih
     
  10. nnttoo

    nnttoo Super Hero

    Joined:
    Apr 16, 2010
    Messages:
    1,260
    Likes Received:
    620

    Regex jadi case insensitife klo gak salah di tambahin i di ujungnya jdinya kek gini




    PHP:
    <?php
    $f 
    '<a href ="url">Privacy Policy</a>aku dan kam';
    echo 
    preg_replace('#<a[^<]*privacy[^<]*</a>#i','',$f);
     
    Last edited: May 27, 2013
    xrvel likes this.
  11. keblux

    keblux Ads.id Fan

    Joined:
    Nov 17, 2011
    Messages:
    101
    Likes Received:
    69
    it's easy

    PHP:
    <?php
    $string  
    '<a href="url">Website PRIVACY Privacy PrIvAcY priVacY privacy policy</a>';
    $source = array();
    $source[0] = '/<a href=["|\'](.*)["}\']>/';
    $source[1] = '/privacy/i';
    $ganti = array();
    $ganti[0] = '';
    $ganti[1] = '';
    $sulap preg_replace($source,$ganti,$string);
    echo 
    str_replace('</a>','',$sulap);
     
  12. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    udah solved. punya boss nnttoo yg terakhir itu yg paling simple n paling cepet execution time nya.

    kalau mau belajar lebih lanjut ttg regex bisa lihat manualnya di hxxp://php.net/manual/en/reference.pcre.pattern.syntax.php
     
    Last edited: May 27, 2013
  13. keblux

    keblux Ads.id Fan

    Joined:
    Nov 17, 2011
    Messages:
    101
    Likes Received:
    69
    kalo ngak salah pemahaman ane, TS pengen anchor model gini
    PHP:
    <a href="url">Website PRIVACY Privacy PrIvAcY priVacY privacy policy</aoke banget dah
    yang ke print, link url ancor ilang dan ouputnya jadi "website oke banget dah" (cuma kata2 privacy aja yang ilang yg lainnya ngak), kalo pake code dari agan nnttoo cuma bisa dapetin belakangnya aja 'oke banget dah'

    CMIWW. mangap kalo salah suhu... namanya jg nubitol :D

    nambah code lagi boleh kan
    PHP:
    <?php
    $string  
    '<a href="url">Website PRIVACY Privacy PrIvAcY priVacY privacy policy</a> oke banget dah ahhh';
    $result =  preg_replace_callback('~(<a href="[^"]*">)([^<]*)(</a>)~'"sulap"$string);
    function 
    sulap($cimcalabim) {
        return 
    str_ireplace('privacy','',$cimcalabim[2]);
    }

    echo 
    $result;
     
    Last edited: May 27, 2013
  14. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    bukan gitu boss, ts pinginnya anchor yg mengandung kata privacy entah huruf besar atau kecil ilang smua mulai dari <a sampai </a>
     
  15. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    Iya mas benar mas.... saya akan coba punya mas nttno, makasih semua master atas masukannya...
     
  16. nnttoo

    nnttoo Super Hero

    Joined:
    Apr 16, 2010
    Messages:
    1,260
    Likes Received:
    620


    Maaf ya mas bro,, ini terlalu banyak while,, preg_replace dengan array itu berarti akan di eksekusi sesuai jumlah array,,

    padahal kalau agan mau ngambil linknya dan anchornya bisa langsung pake regex, tanpa perlu preg_replace berulang-ulang,, bisa pake dalam kurung,,

    PHP:
    #<a[^>]*href="([^"]*)"[^>]*>([^<]*)</a>#

    **kode di atas gak di test dulu,, maaf kalau salah,

    intinya saya cuma pingin menjelaskan dengan tanda () agan bisa mesukan link dan anchor ke dalam array,,

    kalau regex tersebut di masukan dengan preg_match

    maka hasilnya $hasil[0] = linknya,,
    dan $hasl[1] adalah anchornya,,

    Bgaimana hasilnya mas bro,, saran saya kalau habis ASK trus tarik kesimpulan dong gan,,

    jadinya threadnya bermanfaat, jangan ngambang,,
     
    Last edited: May 31, 2013
  17. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    Hasilnya belum berjalan sempurna mas, kalau huruf sama kehapus.
    Masih ke incase sensitive.



    Tapatalk Mode:On
     
  18. mp3online

    mp3online Super Hero

    Joined:
    Jul 19, 2011
    Messages:
    2,228
    Likes Received:
    294
    Location:
    jakarta
    incase sensitive apa case insensitive boss? :D

    hrsnya sih kl di blakang end delimiter udah dikasih i udah case insensitive boss.
    modifier i artinya ignore case/case insensitive.
     
  19. bosspulsa

    bosspulsa WWW.WARMACHINE.IM

    Joined:
    Jan 27, 2008
    Messages:
    4,036
    Likes Received:
    608
    Location:
    Bantoel, Yogyakarta, Indonesia, Indonesia
    iya maksudnya itu mas... agak mumet, mgkn karen ada spasi kali ya? <a> spasi Privacy</a> kok ga semua kehapus.

    Kayak di sini....
    _http://health-diet.4l4y.com/leona7-Cabbage-Soup-Diet-2.0---The-Ultimate-Guide

    kan aslinya...
    _http://www.successful-diet-cabbage-soup.com/quick-weight-loss-plan.html?hop=bosspulsa

    Nah affiliates kok ga hilang ya?
     
    Last edited: Jun 12, 2013
  20. nnttoo

    nnttoo Super Hero

    Joined:
    Apr 16, 2010
    Messages:
    1,260
    Likes Received:
    620
    oh,, yayayaa,, maksudnya yang ini ya mas,,

    HTML:
    <a href="http://www.successful-diet-cabbage-soup.com/cabbage-soup-diet-affiliates.html"><b>affiliates</b></a>
    iya regex yang saya susun memang gagal untuk match dengan link tsb,, karna ada kode <b> di dalam tags a,,

    kita analisa dikit mas, sambil sama-sama belajar,,

    HTML:
    #<a[^<]*privacy[^<]*</a># 
    kita lihat di regex di sini <a[^<]*
    Artinya secara pemahaman saya adalah semua karakter setelah tanda <a kecuali tanda <
    dan itu gagal karna ada tanda < di dalam tags a

    ada beberapa solusi untuk itu sih,, bisa dengan cara menghapus seluruh tanda <b> dan </b> dengan str_replace sebelum masuk ke regex,, (menurutku ini cara termudah),,

    bisa juga dengan merubah regexnya,, misalkan dengan mengganti <a[^>]* dengan <a.*,
    tapi itu bukan berarti tanpa kelemahan,, kelemahannya jika setelah link tersebut juga ada kata yang sama di sini "privacy" maka dari mulai <a sampai dengan kata "privacy" yang terakhir akan match dengan regex tersebut, meskipun kata "privacy" itu berada di luar tanda tag a.

    tapi kelemahan di atas juga bisa di atasi, caranya dengan replace semua <a dengan new line + <a karena tanda . (titik) di regex gak akan match dengan new line,,

    moga-moga membantu, sory baru sempet login forum
     

Share This Page