us_ascii.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. /**
  3. * us_ascii encoding functions
  4. *
  5. * takes a string of unicode entities and converts it to a us-ascii encoded string
  6. * Unsupported characters are replaced with ?.
  7. *
  8. * @version $Id$
  9. * @copyright Copyright &copy; 2004-2005 The SquirrelMail Project Team
  10. * @package squirrelmail
  11. * @subpackage encode
  12. */
  13. /**
  14. * Converts string to us-ascii
  15. * @param string $string text with numeric unicode entities
  16. * @return string us-ascii encoded text
  17. */
  18. function charset_encode_us_ascii ($string) {
  19. // don't run encoding function, if there is no encoded characters
  20. if (! preg_match("'&#[0-9]+;'",$string) ) return $string;
  21. $string=preg_replace("/&#([0-9]+);/e","unicodetousascii('\\1')",$string);
  22. // $string=preg_replace("/&#[xX]([0-9A-F]+);/e","unicodetousascii(hexdec('\\1'))",$string);
  23. return $string;
  24. }
  25. /**
  26. * Return us-ascii symbol when unicode character number is provided
  27. *
  28. * This function is used internally by charset_encode_us_ascii
  29. * function. It might be unavailable to other SquirrelMail functions.
  30. * Don't use it or make sure, that functions/encode/us_ascii.php is
  31. * included.
  32. *
  33. * @param int $var decimal unicode value
  34. * @return string us-ascii character
  35. */
  36. function unicodetousascii($var) {
  37. if ($var < 128) {
  38. $ret = chr ($var);
  39. } else {
  40. $ret='?';
  41. }
  42. return $ret;
  43. }
  44. ?>