Help to check Special characters

Discussion in 'PHP' started by itdmacar, Jan 26, 2010.

  1. #1
    Hi,

    Can you please help me check if my script is correct, I am trying to validate some of the special character, while testing tried to just key in a € sign but it giving me some funny character of â,¬,

    1) is there is something on my script ?
    2) is this the correct way ?
    3) is there other way of checking special characters ?


    
    foreach ($HTTP_POST_VARS as $key => $value )
             {
             If ($key == "header")
                {
                $valtext = $value;
                include('include/textvalidate.php'); 
                $valheader = $valtext;
                } 
             }    
    
    
    //textvalidate 
    
    $valtext = str_replace("€", "Euro ", $valtext);
    $valtext = str_replace("‘", "‘", $valtext);
    $valtext = str_replace("’", "’", $valtext);
    $valtext = str_replace("‚", ",", $valtext);
    $valtext = str_replace("“", "“", $valtext);
    $valtext = str_replace("”", "”", $valtext);
    $valtext = str_replace("„", "„", $valtext);
    $valtext = str_replace("†", "†", $valtext);
    $valtext = str_replace("‡", "‡", $valtext);
    $valtext = str_replace("‰", "‰", $valtext);
    $valtext = str_replace("‹", "‹", $valtext);
    $valtext = str_replace("›", "› ", $valtext);
    $valtext = str_replace("â„¢", "™", $valtext);
    $valtext = str_replace('"', """, $valtext);
    //$valtext = str_replace("&", "&", $valtext);
    $valtext = str_replace("/", "⁄", $valtext);
    $valtext = str_replace("–", "–", $valtext);
    $valtext = str_replace("—", "—", $valtext);
    $valtext = str_replace("¡", "&iexcl", $valtext);
    $valtext = str_replace("¢", "¢", $valtext);
    $valtext = str_replace("£", "£", $valtext);
    $valtext = str_replace("¤", "¤", $valtext);
    $valtext = str_replace("Â¥", "¥", $valtext);
    $valtext = str_replace("¦", "¦", $valtext);
    $valtext = str_replace("§", "§", $valtext);
    $valtext = str_replace("¨", "¨", $valtext);
    $valtext = str_replace("©", "©", $valtext);
    $valtext = str_replace("ª", "ª", $valtext);
    $valtext = str_replace("«", "«", $valtext);
    $valtext = str_replace("¬", "¬", $valtext);
    $valtext = str_replace("®", "®", $valtext);
    $valtext = str_replace("¯", "¯", $valtext);
    $valtext = str_replace("°", "°", $valtext);
    $valtext = str_replace("±", "±", $valtext);
    $valtext = str_replace("²", "²", $valtext);
    $valtext = str_replace("³", "³", $valtext);
    $valtext = str_replace("´", "´", $valtext);
    $valtext = str_replace("µ", "µ", $valtext);
    $valtext = str_replace("¶", "¶", $valtext);
    $valtext = str_replace("·", "·", $valtext);
    $valtext = str_replace("¸", "¸", $valtext);
    $valtext = str_replace("¹", "¹", $valtext);
    $valtext = str_replace("º", "º", $valtext);
    $valtext = str_replace("»", "»", $valtext);
    $valtext = str_replace("¼", "¼", $valtext);
    $valtext = str_replace("½", "½", $valtext);
    $valtext = str_replace("¾", "¾", $valtext);
    $valtext = str_replace("¿", "¿", $valtext);
    $valtext = str_replace("À", "À", $valtext);
    $valtext = str_replace("Á", "Á", $valtext);
    $valtext = str_replace("Â", "Â", $valtext);
    $valtext = str_replace("Ã", "Ã", $valtext);
    $valtext = str_replace("Ä", "Ä", $valtext);
    $valtext = str_replace("Æ", "Æ", $valtext);
    $valtext = str_replace("Ç", "Ç", $valtext);
    $valtext = str_replace("È", "È", $valtext);
    $valtext = str_replace("É", "É", $valtext);
    $valtext = str_replace("Ê", "Ê", $valtext);
    $valtext = str_replace("Ë", "Ë", $valtext);
    $valtext = str_replace("ÃŒ", "Ì", $valtext);
    $valtext = str_replace("Í", "Í", $valtext);
    $valtext = str_replace("ÃŽ", "Î", $valtext);
    $valtext = str_replace("Ï", "Ï", $valtext);
    $valtext = str_replace("Ð", "Ð", $valtext);
    $valtext = str_replace("Ñ", "Ñ", $valtext);
    $valtext = str_replace("Ã’", "Ò", $valtext);
    $valtext = str_replace("Ó", "Ó", $valtext);
    $valtext = str_replace("Ô", "Ô", $valtext);
    $valtext = str_replace("Õ", "Õ", $valtext);
    $valtext = str_replace("Ö", "Ö", $valtext);
    $valtext = str_replace("×", "×", $valtext);
    $valtext = str_replace("Ø", "Ø", $valtext);
    $valtext = str_replace("Ù", "Ù", $valtext);
    $valtext = str_replace("Ú", "Ú", $valtext);
    $valtext = str_replace("Û", "Û", $valtext);
    $valtext = str_replace("Ü", "ú", $valtext);
    $valtext = str_replace("Ý", "Ý", $valtext);
    $valtext = str_replace("Þ", "Þ", $valtext);
    $valtext = str_replace("ß", "ß", $valtext);
    $valtext = str_replace("à", "à", $valtext);
    $valtext = str_replace("á", "á", $valtext);
    $valtext = str_replace("â", "â", $valtext);
    $valtext = str_replace("ã", "ã", $valtext);
    $valtext = str_replace("ä", "ä", $valtext);
    $valtext = str_replace("Ã¥", "å", $valtext);
    $valtext = str_replace("æ", "&aelig", $valtext);
    $valtext = str_replace("ç", "ç", $valtext);
    $valtext = str_replace("è", "è", $valtext);
    $valtext = str_replace("é", "é", $valtext);
    $valtext = str_replace("ê", "ê", $valtext);
    $valtext = str_replace("ë", "ë", $valtext);
    $valtext = str_replace("ì", "ì", $valtext);
    $valtext = str_replace("í", "iacute;", $valtext);
    $valtext = str_replace("î", "î", $valtext);
    $valtext = str_replace("ï", "ï", $valtext);
    $valtext = str_replace("ð", "ð", $valtext);
    $valtext = str_replace("ñ", "ñ", $valtext);
    $valtext = str_replace("ò", "ò", $valtext);
    $valtext = str_replace("ó", "ó", $valtext);
    $valtext = str_replace("ô", "ô", $valtext);
    $valtext = str_replace("õ", "õ", $valtext);
    $valtext = str_replace("ö", "ö", $valtext);
    $valtext = str_replace("÷", "÷", $valtext);
    $valtext = str_replace("ø", "ø", $valtext);
    $valtext = str_replace("ù", "ù", $valtext);
    $valtext = str_replace("ú", "ú", $valtext);
    $valtext = str_replace("û", "û", $valtext);
    $valtext = str_replace("ü", "ü", $valtext);
    $valtext = str_replace("ý", "ý", $valtext);
    $valtext = str_replace("þ", "þ", $valtext);
    $valtext = str_replace("ÿ", "ÿ", $valtext);
    
    
    PHP:
    Thanks in advance . . .
     
    Last edited: Jan 26, 2010
    itdmacar, Jan 26, 2010 IP
  2. danx10

    danx10 Peon

    Messages:
    1,179
    Likes Received:
    44
    Best Answers:
    2
    Trophy Points:
    0
    #2
    Whats this??, comment it...

    textvalidate 
    Code (markup):
    Furthermore try doing this with your replaces:

    $valtext = str_replace(chr(ord("€")), "Euro", $valtext);
    Code (markup):
     
    danx10, Jan 26, 2010 IP
  3. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Thanks for the reply did tried your suggestion but it did not work. ..

    it replace my € with â,¬
     
    itdmacar, Jan 26, 2010 IP
  4. danx10

    danx10 Peon

    Messages:
    1,179
    Likes Received:
    44
    Best Answers:
    2
    Trophy Points:
    0
    #4
    Hmm try this:

    $valtext = preg_replace("/(€)/ie", "Euro ", $valtext);
    Code (markup):
     
    danx10, Jan 26, 2010 IP
  5. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Hi Danx10,

    It did not work, same results, it might be something to do with one of this replace, its ok to that series of replace right ?

    Is there another way to be able them to write to my database w/o error, currently if have one of those characters my sql fails . . .
     
    Last edited: Jan 26, 2010
    itdmacar, Jan 26, 2010 IP
  6. ForumSeeder

    ForumSeeder Peon

    Messages:
    46
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #6
    This is possibly a rendering issue (the data is correct, but the way you are dispaying it isn't)

    Are you displaying this as UTF 8, for example in your headers:

    This will tell the browser how you want to display the data
     
    ForumSeeder, Jan 27, 2010 IP
  7. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #7
    Hi Forumseeder,

    Thank you very much and yes i did that, not realy sure why , , ,

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    HTML:
    What will I do ?

    do I need to remove it ?

    what charset=utf-8 mean ?

    Thanks . . .
     
    itdmacar, Jan 27, 2010 IP
  8. brother_of_devil

    brother_of_devil Peon

    Messages:
    166
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    0
    #8
    What encoding does your PHP editor use?
    What encoding is set when PHP outputs? Do you send the correct headers (that is UTF-8)?
     
    brother_of_devil, Jan 28, 2010 IP
  9. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #9
    Hi Brother_of_devil,

    Sorry, not realy sure how to answer your question i am using dreamweaver, how do i check ?

    PS - can't beleived im talking to the brother of devil :D
     
    Last edited: Jan 28, 2010
    itdmacar, Jan 28, 2010 IP
  10. brother_of_devil

    brother_of_devil Peon

    Messages:
    166
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    0
    #10
    I never used Dreamweaver myself, but I guess this page describes how to change the encoding:
    http://lss.wisc.edu/~sara/dwutf8.htm
    As for PHP, you can set the encoding of the output HTML by sending the proper headers just before ANY output is sent:
    header("Content-Type: text/html; charset=utf-8");

    The idea is that a euro symbol is a unicode character, so the HTML document itself must be in a unicode encoding and the source must be in it too, because you have specified the euro symbol directly - that is as a symbol.
     
    brother_of_devil, Jan 28, 2010 IP
  11. pakistanvoices

    pakistanvoices Peon

    Messages:
    9
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #11
    hi, please let me know are you getting content from CURL or some way else.
    function replace_accents($string)
    {
    return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
    }

    you can use this function to remove these funky characters.
    good luck

    Javaid
    pakistanvoices .com/
    kidzcartoons .com
    paksnaps .com
     
    pakistanvoices, Jan 30, 2010 IP
  12. Bec0de

    Bec0de Well-Known Member

    Messages:
    46
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    115
    #12
    you could use php's utf8_encode() function:
    <?php
    echo utf8_encode($text);
    ?>
    PHP:
     
    Bec0de, Jan 30, 2010 IP
  13. pakistanvoices

    pakistanvoices Peon

    Messages:
    9
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #13
    hio
    You are right Bec0de. But it will not work when data comes from CURL.
     
    pakistanvoices, Jan 30, 2010 IP
  14. Bec0de

    Bec0de Well-Known Member

    Messages:
    46
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    115
    #14
    only if the data is utf8 encoded.
     
    Bec0de, Jan 30, 2010 IP
  15. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #15
    Thank you very much for all your replies . . .

    I will try it tonight all your suggestion . . .

    this been bugging for a week now, thanks again . . .
     
    itdmacar, Jan 30, 2010 IP
  16. itdmacar

    itdmacar Peon

    Messages:
    33
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #16
    Hi,

    Did tried it again, it did not work on my script.

    But i did created a new document, it did work . . .

    
    <?php 
    function replace_accents($string)
    {
    return str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
    }
    
    ?>
    
    <?php 
    
    $string = "à";
    echo replace_accents($string);
    
    ?>
    
    PHP:
    I think there is a fundamental problem on my current script, there might be something in there that caused my data corrupted, not sure anymore, I might rewrite the whole script again. ..

    Thanks to all anyway . . .
     
    itdmacar, Jan 30, 2010 IP