How To Clean Special Characters From PHP String

If you are looking for the PHP special characters clean function then this post might be useful for you. This function can used to remove special character as well as able to replace specific character with other equivalent character or string.

Here is detailed explanation of function:

$specialCharacters Array: This array used to replace special character with other character or string. if you want to interchange (+) with (plus) then you need to specify in the array. You can add/remove array element according to your requirement.

strtr function: This function used to replace other language special characters to plain English character. You can remove this line safely but ensure before that these characters not in your string and you don’t need to remove them.
Last 4 line used to remove other unknown unwanted special characters.

[sourcecode language='php']
function just_clean($string)
{
// Replace other special chars
$specialCharacters = array(
‘#’ => ”,
‘$’ => ”,
‘%’ => ”,
‘&’ => ”,
‘@’ => ”,
‘.’ => ”,
‘€’ => ”,
‘+’ => ”,
‘=’ => ”,
‘§’ => ”,
‘\\’ => ”,
‘/’ => ”,
);

while (list($character, $replacement) = each($specialCharacters)) {
$string = str_replace($character, ‘-‘ . $replacement . ‘-‘, $string);
}

$string = strtr($string,
“ÀÁÂÃÄÅ? áâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ”,
“AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn”
);

// Remove all remaining other unknown characters
$string = preg_replace(‘/[^a-zA-Z0-9\-]/’, ‘ ‘, $string);
$string = preg_replace(‘/^[\-]+/’, ”, $string);
$string = preg_replace(‘/[\-]+$/’, ”, $string);
$string = preg_replace(‘/[\-]{2,}/’, ‘ ‘, $string);

return $string;
}
[/sourcecode]

Written by Bala Krishna

I have high-class programming talent, and the able to work efficiently with international time zones. Outsource your web and software development project to us and get access to some of the best expertise and talent in IT industry. I offer flexible and affordable solution depending upon your project needs. You outsource your coding assignment to us and we finish it on time at a specific cost.

This article has 30 comments

  1. Pingback: How to Highlight PHP Source Code in Wordpress Post | Bala-Krishna

  2. Storm

    Thanks for this post.

    Can you send me the full source code in plain text document (Notepad)? The code is malformed when I copy and paste from this post.

    Thanks!

  3. Bala Krishna

    Thanks to inform me for malformed code. I have corrected formatting issue. You can now copy code to clip board easily. Let me know if you still have trouble copying code.

    Thanks

  4. Storm

    Hi

    Thanks for making the changes.

    It looks like on line 17 still poses as a problem?

  5. Awkens Ryder

    It looks like on line 17 the website didn’t filter the post code since it has some raw HTML on it. “”
    Removing it solved the problem but now one persists.

    I entered: “Água do Lúso” and the returned string was: “n guaOdoOLn so”

  6. Awkens Ryder

    PS: WordPress ate what I said between the first quotes.
    There was suposed to be there:

    LowerThan /code GreaterThan

  7. Will

    Thank you, this was very useful for turning strings into valid filenames.

  8. Chitta

    Thank you very much!! This code snippet helped me.

  9. Pretsay

    Thanks a lot! This has solved my problem.
    What could I say “Bala Krishna ki jai”

  10. JAmes

    Just to say that I had problems cut&pasting the code from Firefox – it messed up the special characters – but when I viewed the page in Chrome it displayed fine.

  11. billy

    here’s an array or error to correct letter i’ve started collecting.
    i messed up with my character encoding into mySql database and had to figure out the correlation.
    hope this saves someone else the time.

    $weirdArray=array(array(“ü”,”ü”), array(“ö”,”ö”), array(“ø”,”ø”), array(“é”,”é”), array(“ß”,”ss”), array(“Ã¥”, “å”) , array(“ä”, “ä”), array(“æ”, “æ”), array(“Ã…”, “Å”), array(“Ä”, “Ä”), array(“Æ”, “Æ”), array(“æ”,”æ”), array(“é”,”é”), array(“ø”,”ø”), array(“Æ”,”Æ”), array(“á”,”á”), array(“è”,”è”), array(“ı”,”?”), array(“Ö”, “Ö”), array(“Ø”,”Ø”), array(“ô”, “”), array(“”, “”), array(“ó”, “ó”), array(“ð”, “ð”), array(“º “, “”), array(“’”, “”), array(“Â’”, “”));

  12. Darkblack

    I need to remove/replace all special language charakters, to store file safely.
    I tried this code for testing, but it doesn’t work.
    Where could be the problem?

    $name = $_FILES['file']['name'];
    $name = mb_convert_case($name, MB_CASE_LOWER, “UTF-8″);
    $name = strtr($name, “áä??é?í???óôš?ú?ýž”, “aacdeeillnoostuuyz”);

    Example of what this code does:
    from: TÉŠ?OVACÍ SÚBOR ?
    to: tsn?a??ovacst ssubor yz
    It should be:
    to: testovaci subor l

  13. Justin

    @Boys Arab

    You have to unescape it with another slash.

    It should be ‘\\’

  14. astaza

    @boys arab
    you can use
    preg_replace(‘/[^\x{0600}-\x{06FF}A-Za-z !@#$%^&*()]/u’,”, $text )

    to clean text with arabic chars
    thanks

  15. Miles Prower

    Remove all non-ascii characters in one line
    $string = preg_replace(‘/[^(\x20-\x7F)]*/’,”, $string);
    ta-da

  16. Pingback: PHP - String manipulation remove spcial characters and replace spaces - PHP Solutions - Developers Q & A

  17. brijmohankaradia

    @Awkens @Darkblack

    add below line before while:
    array_push($specialCharacters,array(‘ ‘=>’*’,));

    Thanks
    Brijmohan

  18. brijmohankaradia

    @Awkens @Darkblack

    add below line before while:
    $specialCharacters[' '] = ‘*';

    Thanks
    Brijmohan

Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>