PHP array searching problem :?

GT9

Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    අදත් වෙනදා වගේම හෙන අවුලක වැටිල ඉන්නේ මචන්.. වෙනද වගේම මේකත් පොඩි php කේස් එකක්.

    මෙතනදී වෙන්නෙ මචන් server requesting url එක array element එකක් එක්ක සසඳන වැඩක්..

    මට වෙන්න ඕන දේ මේකයි මචන්.. උදාහරණයක් විදියට.

    example.com/tipo22.php මෙන්න මේ ආකාරයට මගේ සයිට් එකක් තියෙනවා.. ඒකියන්නේ root එකේ tipo22.php කියල php file එකක් තියෙනවා.. ඉතින් මට ඒ file එක call කරන්න පුලුවන්නේ... මේ ආකාරයට...

    example.com/tipo.php කියලා..
    ඒවගේම මම මේ විදියට ගැහුවත් වැඩ
    example.com/Tipo.php එතනත් අවුලක් නෑ.. හැබැයි මචන්ලා අවුල තියෙන්නේ.. මම පොඩි කෝඩ් එකක් ලිව්‍වා server requesting url එක හා array element සමාන වෙන අවස්තාවලදී පොඩි වැඩක් වෙන්න.. ඒක වැඩ කරන්න නම් අනිවා...

    example.com/tipo.php යටම ගහන්න ඕන.. example.com/Tipo.php ගැහැව්වොත් මම අර ගහපු කෝඩ් එක වැඩ නෑ.. මොකද server requesting url එක අපි pre difine කරපු array element එකට සමාන වෙන්නේ නැති නිසා...

    මේ තියෙන්නේ මේ ප්‍රශ්නෙට මම අත්හදාබලපු කෝඩ් එකක් හැබැයි තාම ගොඩ යන්න බැරි උනා....

    PHP:
    <?php
    // testing code
    
    $sru = $_SERVER['REQUEST_URI'];
    $path = array ('/myphp/tipo25.php','/myphp/tipO22.php','/myphp/tipo23.php','/myphp/Tipo21.php');
    $arrayItem = array_search($sru, $path);
    echo $path[$arrayItem]."<br>";
    
    
    if(in_array($sru, $path) ) {
    if (preg_match('`[A-Z]`',$path[$arrayItem])){
    	$lowerPath = strtolower($path[$arrayItem]);
    	$lowerSRU = strtolower($sru);
    	if ($lowerSRU == $lowerPath){
    		echo "working";
    		} else {
    		echo "not working";
    		}
    	//echo "have capitals";
    	}
    }
    ?>

    ඔය ඉහත කෝඩ් එක ‍ගොඩ දාගන්න පුලුවන් මචන් හැබැයි අවුල තියෙන්නේ.. මෙතනයි...

    මට ඕන මචන්ලා php server requesting url එක අපි Pre difine කරපු array එකේ සර්ච් කරල ඒකේ Index එක හොයාගන්න... ඒක මම මේ විදියට කරා.

    PHP:
    $arrayItem = array_search($sru, $path);

    මෙන්න මෙතන තමයි මචන් කේස් එක තියෙන්නේ...:yes: මෙම array search එක වැඩ කරන්නේ.. මචන් හරිම format එකට විතරයි...

    උදා -

    server requesting url -> /tipo.php කියල ගැහැව්වොත්...
    array element එකත් අනිවාර්යෙන්ම තියෙන්න ඕනේ... /tipo.php කියලමයි... Tipo.php කියල තිබුනොත් එයාට හොයාගන්න බෑ...

    ඇතතටම මට ඕනේ... case sensitive නැතිව මේ දේ කරන්න... ඒකියන්නේ මෙහෙම..

    server requesting url -> /tipo.php
    /Tipo.php
    /TiPo.php

    ඔය වගේ මොන විදියට ‍case එක වෙනස් කරල දුන්නත්... අපි මේ ආකරයට Pre difine කරල තියෙන array element එක හොයාගන්න පුලවන් විදියට...

    array ('tipo.php');

    මේ දේ කරන විදිය මට කියල දෙන්න මචන්ලා.... :(:)
     
    • Like
    Reactions: Lomax

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    $sru = $_SERVER['REQUEST_URI'];
    $path = array ('/myphp/tipo25.php','/myphp/tipO22.php','/myphp/tipo23.php','/myphp/Tipo21.php');

    $arrayItem = array_search(strtolower($sru), $path);

    $path array elements tikath strtolower karala dapan ..


    normally we are doing this by using apache mod_rewrite

    http://httpd.apache.org/docs/current/mod/mod_rewrite.html

    මුලින්ම තෑන්ක්ස් අයියා රිප්ලයි එකට වෙනද වගේම.. :yes::D

    අවුල මේකයි අයියා.. මට array elements වලදී lowercase and uppercase දෙවර්ගයම තියෙන elements call කරන්න උවමනා වෙලා තියෙනවා.. ඒකයි අවුල...:sorry:

    සරල උදාහරණයක්...

    server request url එක දැන් සමානයි කියමු.. /tipo.php එකට...

    මගේ ලඟ pre difine කරපු ‍ඇරේ එකක් තියෙනව මෙහෙම..

    array = ('/tipo1.php','/tipo.php','/tipo4.php');

    ඉතින් මෙන්න මේවගේ ඇරේ සර්ච් එකක් දැම්මම..$arrayItem = array_search(strtolower($sru), $path);

    array index එක විදියට 1 ලැබෙන්න ඕනනේ.... ඒකේ අවුලක් නෑ... හැබැයි.. අපි

    server request url එක විදියට /Tipo.php විදියට දුන්නොත්..
    array search එකට හඳුන ගන්න බැරිවෙනා.. 1 array element එක. ඒකට හේතුව.. ඉතින්.. මම case එක මාරුකරල call කරපු නිසානේ....

    මට ඕන.. මේ ‍case sensitive එක නැති කරල.. මොන විදියට ගැහුවත්.. පිලිවෙලට අකුරු සහ ඉලක්කම් තියෙනව නම්.. අදාල array element එක හොයාගන්න පුලුවන් වෙන්නන....

    මේක PHP වලින් කරන්න පුලුවන් නේද? මට තාම regex වැඩිය බෑ අයියා.. mod_rewriting කරන්නත් regex ඕන නේ...:( අයියට බැරිද කෝඩ් එකක් ලියල දෙන්න.. ලොකුම ලොකු උදව්වක්... :yes::yes::yes:
     
    Last edited:

    Xxo0oxX

    Member
    Oct 2, 2012
    1,585
    114
    0
    use strcasecmp

    <?php
    $var1 = "Hello";
    $var2 = "hello";
    if (strcasecmp($var1, $var2) == 0) {
    echo '$var1 is equal to $var2 in a case-insensitive string comparison';
    }
    ?>
    ;)
     
    • Like
    Reactions: GT9

    rskoora

    Well-known member
  • Apr 1, 2008
    4,001
    608
    113
    <?php


    $sru = $_SERVER['REQUEST_URI'];

    // assume $sru = /hello.php

    $sru = "/hello.php";

    $path = array ('/hello1.php','/hello.php','/tipo23.php','/Tipo21.php');

    //change all array elements to strlower
    $newarr= array_map('strtolower', $path);

    // then do the search

    $arrayItem = array_search(strtolower($sru), $path);



    echo $arrayItem;

    // sample if you feed /hello.php or Hello.php to $path array it will return array index 1


    ?>
     
    • Like
    Reactions: Lomax

    GT9

    Well-known member
  • Jun 22, 2013
    1,564
    167
    63
    [email protected]
    <?php


    $sru = $_SERVER['REQUEST_URI'];

    // assume $sru = /hello.php

    $sru = "/hello.php";

    $path = array ('/hello1.php','/hello.php','/tipo23.php','/Tipo21.php');

    //change all array elements to strlower
    $newarr= array_map('strtolower', $path);

    // then do the search

    $arrayItem = array_search(strtolower($sru), $path);



    echo $arrayItem;

    // sample if you feed /hello.php or Hello.php to $path array it will return array index 1


    ?>

    YooooHoooooooooo

    වැඩේ ගොඩ කූර අයියේ.... රොම්බ තෑන්ක්ස්.... අපි වගේ අසරණයන්ට මෙහෙම පිහිටවෙනවට ගොඩක් පින්... :yes::yes: :D :D

    girl-happy.jpg