SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Wizard lorenw's Avatar
    Join Date
    Feb 2005
    Location
    was rainy Oregon now sunny Florida
    Posts
    1,100
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    Array, replace returns extra mystery char.

    Thank you for looking at this. This is so simple and straight forward that for the life of me can't figure out. If $cc is US or YT I get the correct 3 char country code. If $cc is LS it returns LSOM ?? It should be LSO, where is the M coming from??

    This should be simple and I should be able to figure it out but I am stumped here.

    PHP Code:
    function two_three ($in){

    $two = array('AF''AL''DZ''AS''AD''AO''AI''AQ''AG''AR''AM''AW''AU''AT''AZ''BS''BH''BD''BB''BY''BE''BZ''BJ''BM''BT''BO''BA''BW''BV''BR''IO''BN''BG''BF''BI''KH''CM''CA''CV''KY''CF''TD''CL''CN''CX''CC''CO''KM''CG''CD''CK''CR''CI''HR''CU''CY''CZ''DK''DJ''DM''DO''TP''EC''EG''SV''GQ''ER''EE''ET''FK''FO''FJ''FI''FR''FX''GF''PF''TF''GA''GM''GE''DE''GH''GI''GR''GL''GD''GP''GU''GT''GN''GW''GY''HT''HM''VA''HN''HK''HU''IS''IN''ID''IR''IQ''IE''IL''IT''JM''JP''JO''KZ''KE''KI''KP''KR''KW''KG''LA''LV''LB''LS''LR''LY''LI''LT''LU''MO''MK''MG''MW''MY''MV''ML''MT''MH''MQ''MR''MU''YT''MX''FM''MD''MC''MN''MS''MA''MZ''MM''NA''NR''NP''NL''AN''NC''NZ''NI''NE''NG''NU''NF''MP''NO''OM''PK''PW''PA''PG''PY''PE''PH''PN''PL''PT''PR''QA''RE''RO''RU''RW''KN''LC''VC''WS''SM''ST''SA''SN''SC''SL''SG''SK''SI''SB''SO''ZA''GS''ES''LK''SH''PM''SD''SR''SJ''SZ''SE''CH''SY''TW''TJ''TZ''TH''TG''TK''TO''TT''TN''TR''TM''TC''TV''UG''UA''AE''GB''US''UM''UY''UZ''VU''VE''VN''VG''VI''WF''EH''YE''YU''ZM''ZW');

    $three = array('AFG''ALB''DZA''ASM''AND''AGO''AIA''ATA''ATG''ARG''ARM''ABW''AUS''AUT''AZE''BHS''BHR''BGD''BRB''BLR''BEL''BLZ''BEN''BMU''BTN''BOL''BIH''BWA''BVT''BRA''IOT''BRN''BGR''BFA''BDI''KHM''CMR''CAN''CPV''CYM''CAF''TCD''CHL''CHN''CXR''CCK''COL''COM''COG''COD''COK''CRI''CIV''HRV''CUB''CYP''CZE''DNK''DJI''DMA''DOM''TMP''ECU''EGY''SLV''GNQ''ERI''EST''ETH ''FLK''FRO''FJI''FIN''FRA''FXX''GUF''PYF''ATF''GAB''GMB''GEO''DEU''GHA''GIB''GRC''GRL''GRD''GLP''GUM''GTM''GIN''GNB''GUY''HTI''HMD''VAT''HND''HKG''HUN''ISL''IND''IDN''IRN''IRQ''IRL''ISR''ITA''JAM''JPN''JOR''KAZ''KEN''KIR''PRK''KOR''KWT''KGZ''LAO''LVA''LBN''LSO''LBR''LBY''LIE''LTU''LUX''MAC''MKD''MDG''MWI''MYS''MDV''MLI''MLT''MHL''MTQ''MRT''MUS''MYT''MEX''FSM''MDA''MCO''MNG''MSR''MAR''MOZ''MMR''NAM''NRU''NPL''NLD''ANT''NCL''NZL''NIC''NER''NGA''NIU''NFK''MNP''NOR''OMN''PAK''PLW''PAN''PNG''PRY''PER''PHL''PCN''POL''PRT''PRI''QAT''REU''ROM''RUS''RWA''KNA''LCA''VCT''WSM''SMR''STP''SAU''SEN''SYC''SLE''SGP''SVK''SVN''SLB''SOM''ZAF''SGS''ESP''LKA''SHN''SPM''SDN''SUR''SJM''SWZ''SWE''CHE''SYR''TWN''TJK''TZA''THA''TGO''TKL''TON''TTO''TUN''TUR''TKM''TCA''TUV''UGA''UKR''ARE''GBR''USA''UMI''URY''UZB''VUT''VEN''VNM''VGB''VIR''WLF''ESH''YEM''YUG''ZMB''ZWE');


    $out str_replace($two$three$in);
    return 
    $out;
    }
    //$cc = 'US';
    //$cc = 'YT';
    $cc 'LS';
    echo 
    two_three($cc); 
    Thank you.
    What I lack in acuracy I make up for in misteaks

  2. #2
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,748
    Mentioned
    72 Post(s)
    Tagged
    0 Thread(s)
    Try...
    $two ... (as you had it)
    $three (as you had it)
    $four = array_combine($two,$three);
    return (isset($four[$in]) ? $four[$in] : $in);

    I'm guessing whats happening is that the string replace does this:

    Input String: "LS"
    Does "L" exist in my replace array? No.
    Does "LS" exist in my replace array? Yes. Replace with LSO. String is now LSO.
    Does "LSO" exist in my replace array? No.
    Does "S" exist in my replace array? No.
    Does "SO" exist in my replace array? Yes. Replace with SOM. String is now LSOM
    .....(rinse repeat with lots of no's)
    Output: LSOM.

    (It also may be walking through the replace array rather than the string, in which case the logic is...
    Input String: LS
    ..... (whole bunch of checks)
    Does "LS" exist in my target String? Yes. Replace with LSO. String is now LSO.
    .... (more checks)
    Does "SO" exist in my target String? Yes. Replace with SOM. String is now LSOM.
    ... (more checks)
    Output: LSOM.

  3. #3
    SitePoint Wizard lorenw's Avatar
    Join Date
    Feb 2005
    Location
    was rainy Oregon now sunny Florida
    Posts
    1,100
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Awesome, that has to be it, I would have never come to that conclusion.

    Many Thanks.
    What I lack in acuracy I make up for in misteaks


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •