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

[ASK][PHP] Help Regular Expression di permalink

Discussion in 'Pemrograman Web' started by andiklive, Feb 25, 2015.

Tags:
  1. andiklive

    andiklive Super Hero

    Joined:
    Feb 4, 2012
    Messages:
    1,569
    Likes Received:
    103
    Location:
    Kurniawan Technologies
    Hello agan2 ads.id,
    ada yang jago RegEx gak, saya lagi bingung soal regex kalau bisa dibantu yah.
    saya menggunakan explode() untuk mencari path dan preg_match() mencocokan bagian yang saya bold.
    masalahnya saya belum bisa mendapatkan regex yang pas.

    url stucture :
    _domain.com/post/ASD007-lorem-ipsum-dolor-sit-amet-77/

    pengennya memenuhi syarat dibawah, seperti di path 3 bagian.
    dimana awal untuk code article, tengah untuk slug title, dan akhir untuk id category.
    untuk /post/ kalau bisa dimasukan sekalian pada regex gpp.
    dimana :
    ASD007 =
    yang lolos 0-9a-zA-Z
    lorem-ipsum-dolor-sit-amet = yang lolos a-zA-Z-
    77 = yang lolos 0-9 atau digit
    semua special character tidak diperbolehkan

    kalau ada yang bisa bantu yah, thanks ads.id :senyum:
     
    Last edited: Feb 25, 2015
  2. andiklive

    andiklive Super Hero

    Joined:
    Feb 4, 2012
    Messages:
    1,569
    Likes Received:
    103
    Location:
    Kurniawan Technologies
    tambahan :
    ini buat filter layer 1,
    untuk layer 2 akan menredirect jika tidak ada yang cocok pada querynya, jika lolos layer 1 kan bisa hemat resource.
    thanks
     
  3. punxs

    punxs musuhnya google

    Joined:
    Dec 9, 2010
    Messages:
    448
    Likes Received:
    48
    Location:
    Di Depan Mu
    PHP:
    $query'/post/ASD007-lorem-ipsum-dolor-sit-amet-77/';
    preg_match('#^/post/([0-9a-zA-Z]*?)(-([a-zA-Z-]*?)-([0-9]*?))/$#',$query,$match);
    $id $match[1];
    $slug $match[3];
    $catid $match[4];
     
  4. andiklive

    andiklive Super Hero

    Joined:
    Feb 4, 2012
    Messages:
    1,569
    Likes Received:
    103
    Location:
    Kurniawan Technologies
    kalau tanpa /post/ gimana mas, isi variable saya yg buat check ASD007-lorem-ipsum-dolor-sit-amet-77
    btw kode diatas gak work mas, saya edit gini jadi work tapi sepertinya special karakter lolos.
    \/post\/([0-9a-zA-Z]*?)(-([a-zA-Z-]*?)-([0-9]*?))\/

    PHP:
    <?php
    $route 
    explode('/'$_SERVER['REQUEST_URI']);
    if (
    $route[1] == 'post' && preg_match('/regex/'$route[2]) === true) {
        
    // do someting
    }
    ?>
    tujuan saya cuma memastikan bahwa variable tersebut structurenya valid saja.
    maaf mas kalau saya banyak tanya, saya kurang paham masalah regex soalnya. hehe...
     
  5. punxs

    punxs musuhnya google

    Joined:
    Dec 9, 2010
    Messages:
    448
    Likes Received:
    48
    Location:
    Di Depan Mu
    PHP:
    <?php
    $route 
    explode('/'$_SERVER['REQUEST_URI']);
    if (
    $route[1] == 'post' && preg_match('#^([0-9a-zA-Z]+)-([a-zA-Z-]+)-([0-9]+)$#'$route[2], $match) && !empty($match)) {
        
    $id $match[1];
        
    $slug $match[2];
        
    $catid $match[3];
    }
    ?>
    sesuaikan saja dengan kebutuhan, menurut saya lebih efisien tanpa harus explode dulu
    PHP:
    <?php
    if (preg_match('#^\/post\/([0-9a-zA-Z]+)-([a-zA-Z-]+)-([0-9]+)\/$#',  $_SERVER['REQUEST_URI'], $match) && !empty($match)) {
        
    $id $match[1];
        
    $slug $match[2];
        
    $catid $match[3];
    }
    ?>
     
    Last edited: Feb 25, 2015
    andiklive and xrvel like this.
  6. andiklive

    andiklive Super Hero

    Joined:
    Feb 4, 2012
    Messages:
    1,569
    Likes Received:
    103
    Location:
    Kurniawan Technologies
    thanks banget mas, worked! :senyum:
     
  7. lhfazry

    lhfazry Newbie

    Joined:
    Apr 23, 2015
    Messages:
    20
    Likes Received:
    0

    mantap gan
     

Share This Page