မင်္ဂလာပါ!

လှိုက်လှဲစွာကြိုဆိုပါသည်။ ယခု ပထမဆုံးအကြိမ် ရောက်ဖူးခြင်းဖြစ်ပါသလား? ဝင်ရောက် ဆွေးနွေး မေးမြန်းလိုပါလျှင် အောက်တွင်ဖော်ပြထားသော button များမှတဆင့် ဝင်ရောက် ဆွေးနွေးနိုင်သကဲ့သို့ အဖွဲ့ဝင်အသစ်အနေဖြင့်လည်း လျှောက်ထားနိုင်ပါတယ်။

MYSTERY ZILLION တွင် English သို့မဟုတ် Unicode ဖြင့်သာ အသုံးပြုခွင့်ရှိသည်။ ဇော်ဂျီ ၊ ဧရာ စသည်တို့ကို အသုံးပြုခွင့် မရှိ။ Unicode fonts များမှာ Mon3,Yunghkio, Myanamr3 စသည်များ အသုံးပြုနိုင်သည်။ Unicode Guide ကို ဒီမှာ Download ချပါ။ Zawgyi to Unicode Converter
Don't share ebook or software if nobody request. You can find free book websites on here. We are welcome for discussion or asking question instead.

Regular Expression

edited July 2008 in PHP
လူလည်းမူးနောက်နေပြီ... regular expression က အခြေခံမရှိတော့ တော်တော်ခက်တယ်... အခု ကျွန်တော် PHP နဲ့ရေးချင်တာ

$string="require_once('test.php');test" ;

အဲမှာ test.php ပဲကျန်စေချင်တယ်.. အကုန်ဖျက်လိုက်ခြင်းတယ်..
တနည်းပြောရင် ရှေ့မှာ ကြိုက်တာဖြစ်... ( ) ထဲက [A-Za-z0-9].php ပဲကျန်စေချင်တယ်.. ကျန်တာတွေ အကုန်ဖျက်ပစ်ပေ့ါ...

ကျွန်တော် အခုလုပ်ချင်တာက .php file ထဲကနေ ယူသုံးထားတဲ့ file စာရင်းကို ထုတ်ချင်လို့ပါ...

ရေးတတ်တဲ့လူတွေ ကူပါအုံးဗျာ.. :106:

မှတ်ချက်များ

  • edited June 2008 Administrators
    [PHP]<?php

    $string = "This is test;require(test.php);test";

    echo ereg_replace("[^[A-Za-z0-9]+\.php]", "", $string);

    ?>

    [/PHP]
    ဘာမှားနေမှန်းကို မသိတာ.. မရဘူးဖြစ်နေတယ်ဗျာ...
  • edited June 2008 Moderators
    saturngod wrote: »
    [php]<?php

    $string = "This is test;require(test.php);test";

    echo ereg_replace("[^[A-Za-z0-9]+\.php]", "", $string);

    ?>

    [/php]ဘာမှားနေမှန်းကို မသိတာ.. မရဘူးဖြစ်နေတယ်ဗျာ...

    ereg_replace က စာတစ်ကြောင်းလုံးပြင်ပြီးသားကို return ပြန်ပေးမှာ။

    ဒီလိုရေးရင်
    echo ereg_replace("\(([A-Za-z0-9]+\.php)\)", "[[[\\1]]]", $string);
    
    ဒီလိုရမယ်။
    This is test;require[[[test.php]]];test
    
    အထဲက စာလုံးကို ပဲလိုချင်ရင် preg_match တို့ဘာတို့သုံးသင့်ပါတယ်။

    နောက်ပြီး လေးထောင့်ကွင်း [ ] ကို nested လုပ်လို့ရတဲ့ regex တစ်ခါမှာ မတွေ့ဘူးပါဘူး။
    လေးထောင့်ကွင်းထဲမှာ လေးထောင့်ကွင်း ရေးရင် \[ \] တို့နဲ့ ခံရေးမှ ရပါတယ်။

    မာ့ခ်
  • edited June 2008 Administrators
    ဗိုလ်စေတန် ... ကျွန်တော် မတောက် တစ်ခေါက်စမ်းကြည့်တာတော့

    [PHP]
    <?php
    $string = "This is test;require(test.php);test;";
    ereg ("(([A-Za-z0-9]+\.php))", $string, $regs);
    echo $regs[0];
    echo "<br>";
    ?>
    [/PHP]
    အဲလိုရေးရင်တော့ Result က
    [HTML]test.php[/HTML]
    ဆိုပြီးထွက်တယ် .. ဒါပေမယ့် ကိုစေတန်က .php တစ်ဖိုင်လုံးကို scan လုပ်ပြီး အတွင်းမှာ test.php လိုမျိုး ဘယ်နှစ်ဖိုင်လောက်ပါမလဲ list ထုတ်ချင်တာ မဟုတ်လား ..။ ကျွန်တော့် code ကတော့ အဲလောက်ထိ မရသေးဘူး ... တခုခု အထောက်အကူဖြစ်မလားလို့ .. ဟီးဟီး။
  • edited June 2008 Administrators
    ကျွန်တော် လိုချင်တာက php file တစ်ခုကို ဖတ်လိုက်မယ်... သူပြန်ခေါ်ထားတဲ့ .php စာရင်းပြန်ရချင်တယ်.. အဲလိုလေးလုပ်ချင်လို့ပါ...
    ကို DBA ရေ စမ်းကြည့်လိုက်မယ်...
    မော့ခ်ရေ တချက်လောက် ရှင်းပြပေးပါ...
    အဲဒီ regular expression လေး သေသေချာချာသိချင်လို့ပါ... တစ်ညလုံး လေ့လာတာ နားကိုမလည်ဘူး.. :D

    pattern replacement ဆို ပိုရှုပ်ကုန်တယ်... webdeveloper.com က အဖြေကလည်း မ OK ဘူး... :(
  • edited June 2008 Administrators
    [PHP]
    <?php
    $string = "This is test;require('test.php');test;require('test2.php')";
    ereg ("(([A-Za-z0-9]+\.php))", $string, $regs);

    foreach ($regs as $val)
    {
    echo $val.'<br>';
    }
    echo "<br>";
    ?>
    [/PHP]
    အဲလိုရေးပေမယ့် test.php တစ်ခုပဲထွက်လာပါတယ်.. test.php test2.php ဆိုပြီး မထွက်လာဘူးဗျ
  • edited June 2008 Administrators
    ဒီမှာလဲနဲနဲ လေ့လာ http://regexlib.com/DisplayPatterns.aspx
  • edited June 2008 Moderators
    saturngod wrote: »
    [php]
    <?php
    $string = "This is test;require('test.php');test;require('test2.php')";
    ereg ("(([A-Za-z0-9]+\.php))", $string, $regs);

    foreach ($regs as $val)
    {
    echo $val.'<br>';
    }
    echo "<br>";
    ?>
    [/php]အဲလိုရေးပေမယ့် test.php တစ်ခုပဲထွက်လာပါတယ်.. test.php test2.php ဆိုပြီး မထွက်လာဘူးဗျ

    hi bro,

    အဲတာမျိုးလိုချင်ရင်တော့ preg_match_all ဆိုတာကိုသုံးပါ။
    [PHP]
    preg_match_all("|\(\'([a-zA-Z0-9]+\.php)\'\)|U", $string, $tmp, PREG_PATTERN_ORDER);[/PHP]
    အဲလိုလုပ်ရင် $tmp ထဲမှာ 2-dimensional Array တစ်ခုရလာမယ်။ ကြည့်ချင်ရင်

    [PHP]print_r($tmp);[/PHP]
    အဲလိုလုပ်ရင် ဒီလိုရမယ်။
    Array
    (
        [0] => Array
            (
                [0] => ('test.php')
                [1] => ('test2.php')
            )
    
        [1] => Array
            (
                [0] => test.php
                [1] => test2.php
            )
    
    )
     
    
    )
    
    သုံးမယ်ဆိုရင်တော့ $tmp[0][0] to $tmp[0][1] စသည်ဖြင့် သုံးရပါတယ်။

    မာ့ခ်
  • edited July 2008 Administrators
    ဟုတ်ပါပြီ..
    |\(\'([a-zA-Z0-9]+\.php)\'\)|U
    
    အဲဒါရဲ့ အဓိပ္ပာယ်လေး ဖော်ပြပေးပါအုံး မော့ခ်ရေ...

    |U က ဘာကို ပြောတာလဲ.. ကျွန်တော် .html ကိုပါထည့်စစ်ချင်လို့ လုပ်နေတာ... မရသေးဘူး...
  • edited July 2008 Administrators
    [PHP]<?php
    $string = 'This is test;require("test.php");test;require("test2.php");<a href="test2.html"></a>';
    preg_match_all("((([a-zA-Z0-9]+\.php)|([a-zA-Z0-9]+\.html))|U)", $string, $tmp);
    print_r($tmp);
    ?>
    [/PHP]
    အဲလိုရေးလိုက်တော့
    ဒီလိုထွက်လာတယ်..[PHP]
    Array ( [0] => Array ( [0] => test.php [1] => test2.php [2] => test2.html ) [1] => Array ( [0] => test.php [1] => test2.php [2] => test2.html ) [2] => Array ( [0] => test.php [1] => test2.php [2] => ) [3] => Array ( [0] => [1] => [2] => test2.html ) ) [/PHP]
    အဲလိုလိုချင်တာမဟုတ်တော့ ပြသနာပဲ... :D
    လိုချင်တာက အရင်လို ရှင်းရှင်းလေး ပုံစံနဲ့.. အခုဟာက တော်တော် ရှုပ်ကုန်တာပဲ... :P
  • edited July 2008 Moderators
    saturngod wrote: »
    ဟုတ်ပါပြီ..
    |\(\'([a-zA-Z0-9]+\.php)\'\)|U
    
    အဲဒါရဲ့ အဓိပ္ပာယ်လေး ဖော်ပြပေးပါအုံး မာ့ခ်ရေ...

    |U က ဘာကို ပြောတာလဲ.. ကျွန်တော် .html ကိုပါထည့်စစ်ချင်လို့ လုပ်နေတာ... မရသေးဘူး...

    U is unicode, I think so.

    |xxxxxxxxxx| ကအဖွင့်နဲ့ အပိတ်ပါ။
    regex တွေက programming language ပေါ်မူတည်ပြီး မျိုးစုံရှိပါတယ်။
    javascript ဆိုရင် /xxxxx/ ဆိုပြီးရေးလို့ရပါတယ်။
    တချို့language က "xxx" ထဲဒီတိုင်းရေးပါတယ်။ some are use single quotes 'xxxx'
    that preg_match_all can write "|xxxxxx|"

    /gim , |U စတာတွေက options တွေပါ။
    global, case ignore, multiline, unicode etc.....

    :D:D:D

    Regards,
    Mark
  • edited July 2008 Moderators
    saturngod wrote: »
    [php]<?php
    $string = 'This is test;require("test.php");test;require("test2.php");<a href="test2.html"></a>';
    preg_match_all("((([a-zA-Z0-9]+\.php)|([a-zA-Z0-9]+\.html))|U)", $string, $tmp);
    print_r($tmp);
    ?>
    [/php]အဲလိုရေးလိုက်တော့
    ဒီလိုထွက်လာတယ်..[php]
    Array ( [0] => Array ( [0] => test.php [1] => test2.php [2] => test2.html ) [1] => Array ( [0] => test.php [1] => test2.php [2] => test2.html ) [2] => Array ( [0] => test.php [1] => test2.php [2] => ) [3] => Array ( [0] => [1] => [2] => test2.html ) ) [/php]အဲလိုလိုချင်တာမဟုတ်တော့ ပြသနာပဲ... :D
    လိုချင်တာက အရင်လို ရှင်းရှင်းလေး ပုံစံနဲ့.. အခုဟာက တော်တော် ရှုပ်ကုန်တာပဲ... :P

    btw, $tmp is object, you can loop that with for each, for ... something.

    Regards,
    Mark
  • edited July 2008 Administrators
    [PHP]
    <?php
    $string = 'This is test;require("test.php");test;require("test2.php");<a href="test2.html"></a>include("html3.inc")';
    preg_match_all("((([a-zA-Z0-9]+\.php)|([a-zA-Z0-9]+\.html))|U)", $string, $tmp);

    echo $str;
    echo "ARRAY: ";
    print_r($tmp);
    echo "<br>";
    echo "<br>";
    echo "<br>";

    for ($i = 0; $i <= sizeof($tmp[0]); $i++) {
    echo $tmp[0][$i].'<br>';

    }
    ?>
    [/PHP]

    တဆင့်တော့ OK ပြီ... ခက်တာက idea လွဲသွားတယ်...
    require_once , include_once , include, require စတာတွေ သုံးထားတဲ့ .php ဖြစ်ဖြစ်.. .txt ဖြစ်ဖြစ်... ဘာခေါ်ထားတယ်ဆိုတာ သိချင်တာ...
    ကျွန်တော် အရင်က စဉ်းစားသလို လုပ်လို့မရဘူးဗျ... ဘာဖြစ်လို့လည်းဆိုတော့ .php နဲ့မခေါ်ပဲ.. တချို့ opensource တွေမှာ .inc , .tpl ဖြစ်ဖြစ် အခြား ကိုယ်ပိုင်ဟာတွေ သုံးတာကို တွေ့ရလို့ပါ..
  • edited July 2008 Moderators
    saturngod wrote: »
    [php]
    <?php
    $string = 'This is test;require("test.php");test;require("test2.php");<a href="test2.html"></a>include("html3.inc")';
    preg_match_all("((([a-zA-Z0-9]+\.php)|([a-zA-Z0-9]+\.html))|U)", $string, $tmp);

    echo $str;
    echo "ARRAY: ";
    print_r($tmp);
    echo "<br>";
    echo "<br>";
    echo "<br>";

    for ($i = 0; $i <= sizeof($tmp[0]); $i++) {
    echo $tmp[0][$i].'<br>';

    }
    ?>
    [/php]တဆင့်တော့ OK ပြီ... ခက်တာက idea လွဲသွားတယ်...
    require_once , include_once , include, require စတာတွေ သုံးထားတဲ့ .php ဖြစ်ဖြစ်.. .txt ဖြစ်ဖြစ်... ဘာခေါ်ထားတယ်ဆိုတာ သိချင်တာ...
    ကျွန်တော် အရင်က စဉ်းစားသလို လုပ်လို့မရဘူးဗျ... ဘာဖြစ်လို့လည်းဆိုတော့ .php နဲ့မခေါ်ပဲ.. တချို့ opensource တွေမှာ .inc , .tpl ဖြစ်ဖြစ် အခြား ကိုယ်ပိုင်ဟာတွေ သုံးတာကို တွေ့ရလို့ပါ..

    အဲဒါဆိုရင် [a-zA-Z0-9]+\.php အစား [a-zA-Z0-9]+\.[a-zA-Z0-9]+ သုံးလို့ရပါတယ်။

    မာ့ခ်
  • edited July 2008 Administrators
    အဲလိုလဲ အဆင်မပြေဘူးဗျ....

    I am lazy boy.Yes you are.This is test.

    အဲမှာဆို boy.Yes , are.This တွေပါပါကုန်မယ်လေ.....
    သူလှမ်းခေါ်တဲ့ function မှာမှ ရမယ်ထင်တယ်... require တို့ include တို့မှပေါ့.. အဲမှာလည်း ထပ်စားပြန်ပြီ... require နောက်မှာ ကွင်းပါတာ ဖြစ်နိုင်သလို ကွင်းမပါတာဖြစ်နိုင်တယ်... နောက်ပြီး " ဖြစ်နိုင်သလို ' လည်းဖြစ်နိုင်တယ်... ဝူး... တော်တော်ခက်ပါသကား....
  • edited July 2008 Moderators
    saturngod wrote: »
    အဲလိုလဲ အဆင်မပြေဘူးဗျ....

    I am lazy boy.Yes you are.This is test.

    အဲမှာဆို boy.Yes , are.This တွေပါပါကုန်မယ်လေ.....
    သူလှမ်းခေါ်တဲ့ function မှာမှ ရမယ်ထင်တယ်... require တို့ include တို့မှပေါ့.. အဲမှာလည်း ထပ်စားပြန်ပြီ... require နောက်မှာ ကွင်းပါတာ ဖြစ်နိုင်သလို ကွင်းမပါတာဖြစ်နိုင်တယ်... နောက်ပြီး " ဖြစ်နိုင်သလို ' လည်းဖြစ်နိုင်တယ်... ဝူး... တော်တော်ခက်ပါသကား....

    hi bro,

    give me proper examples strings.

    you removed \( and \) from my original regex, thats why u getting un-related strings.

    Original regex
    |\(\'([a-zA-Z0-9]+\.php)\'\)|U

    >> require နောက်မှာ ကွင်းပါတာ ဖြစ်နိုင်သလို ကွင်းမပါတာဖြစ်နိုင်တယ်
    give me proper strings, because I am NOT thinking like you,
    I made regex base on example string you gave me.

    Regards,
    Mark
  • edited July 2008 Administrators
    aTxIvG4001 wrote: »
    hi bro,

    give me proper examples strings.

    you removed \( and \) from my original regex, thats why u getting un-related strings.

    Original regex
    |\(\'([a-zA-Z0-9]+\.php)\'\)|U

    >> require နောက်မှာ ကွင်းပါတာ ဖြစ်နိုင်သလို ကွင်းမပါတာဖြစ်နိုင်တယ်
    give me proper strings, because I am NOT thinking like you,
    I made regex base on example string you gave me.

    Regards,
    Mark
    ရပါပြီဗျာ....
    ဒီလိုရေးလိုက်ပါတယ်...
    [PHP]
    <?php
    $string = 'I am lazyboy.Yes you are.This is test;include "test.php";require("test3.php");test;require("test2.php");<a href="test2.html"></a>include("html3.inc")';

    $first="(require|require_once|include|include_once)";
    $start_bk="(\(| )";
    $dobule_single="(\"|\')";
    $file="([a-zA-Z0-9]+\.[a-zA-Z0-9]+)";
    $end_bk="(\)| |;)?";



    preg_match_all("(".$first.$start_bk.$dobule_single.$file.$end_bk.")", $string, $tmp);


    /*
    echo $string.'<br>';
    echo "ARRAY: ";
    print_r($tmp);
    echo "<br>";
    echo "<br>";
    echo "<br>";
    */
    echo "<ul>";
    for ($i = 0; $i < sizeof($tmp[0]); $i++) {


    # echo $tmp[0][$i].'<br>';
    echo "<li>".preg_replace("(".$first.$start_bk.$dobule_single.")","",$tmp[0][$i]).'</li>';

    }
    echo "</ul>";
    ?>
    [/PHP]
  • edited July 2008 Moderators
Sign In or Register to comment.