PHP Issues With Decoding Strange Smart Quotes And Non-Standard ASCII Characters

When using strip_tags and html_entity_decode with PHPit often breaks and produces annoying diamonds with question marks.

It is probably because of characters like these:

… (looks like 3 dots but it is a single weird character).

’ (looks like a normal apostraphe but it is not)

” (looks like a normal double quote but it is not).

An easy way to sort this out is to copy the above and search in an ASCII table to extend the functionality below.

Basically the first array has a list of "all the bad stuff" and the second array is what to replace it with.



function CleanupSmartQuotes($text)
{
$badwordchars=array(
chr(145), // weird apostraphe
chr(146), // weird apostraphe
chr(147), // weird quote
chr(148), // weird quote
chr(151), // weird dash
chr(133), // three dots
' ',
);
$fixedwordchars=array(
"'",
"'",
'"',
'"',
'—',
'...',
'',
);
return str_replace($badwordchars,$fixedwordchars,$text);
}

?>


Tags:

php, decoding, quotes, ascii, characterswhen, strip_tags, html_entity_decode, produces, characters, hellip, dots, rsquo, apostraphe, rdquo, extend, functionality, array, quot, cleanupsmartquotes, text, badwordchars, chr, dash, fixedwordchars, mdash, str_replace,

Latest Articles

  • Debian Ubuntu Mint Howto Create Bridge (br0)
  • How To Control Interface that dhcpd server listens to on Debian based Linux like Mint and Ubuntu
  • LUKS unable to type password to unlock during boot on Debian, Ubuntu and Mint
  • Debian Ubuntu and Linux Mint Broken Kernel After Date - New Extra Module Naming Convention
  • Wordpress overwrites and wipes out custom htaccess rules and changes soluton
  • Apache htaccess and mod_rewrite how to redirect and force all URLs and visitors to the SSL / HTTPS version
  • python 3 pip cannot install mysql module
  • QEMU-KVM won't boot Windows 2016 or 2019 server on an Intel Core i3
  • Virtualbox vbox not starting "No suitable module for running kernel found"
  • Bind / named not responding to queries solution
  • Linux Mint How To Set Desktop Background Image From Bash Prompt CLI
  • ImageMagick Convert PDF Not Authorized
  • ImageMagick Converted PDF to JPEG some files have a black background solution
  • Linux Mint Mate Customize the Lock screen messages and hide username and real name
  • Ubuntu/Gnome/Mint/Centos How To Take a partial screenshot
  • ssh how to verify your host key / avoid MIM attacks
  • Cisco IP Phone CP-8845 8800/8900 Series How To Reset To Factory Settings Instructions
  • ls how to list ONLY directories
  • How to encrypt your SSH private key file id_rsa
  • Linux Mint 18 Disable User Name List from showing on Login Screen