diff --git a/ascii.php b/ascii.php new file mode 100644 index 0000000..87a9174 --- /dev/null +++ b/ascii.php @@ -0,0 +1,76 @@ +'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'Ae', + 'Ç'=>'C', + 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', + 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', + 'Ð'=>'Dj', + 'Ñ'=>'N', + 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', + 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', + 'Ý'=>'Y', + 'Þ'=>'B', + 'ß'=>'Ss', + 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'ae', + 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', + 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', + 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', + 'ù'=>'u', 'ú'=>'u', 'û'=>'u', + 'ý'=>'y', + 'þ'=>'b', + 'ÿ'=>'y', + 'Š'=>'S', 'š'=>'s', 'ś' => 's', + 'Ž'=>'Z', 'ž'=>'z', + 'ƒ'=>'f' + ); + } + return strtr($str, $normalizeChars); +} +/** + * Convert all fields in $item to ASCII. + * + * Do this by first normalizing the characters (á -> a, ñ -> n, etc.). If any + * non-ASCII characters remain, replace with a default value. + * + * @param array|object $item Array or object containing fields to convert + * @param array|object $template Contains template fields + * @param string $default Value to use when field not present in $template + * @param array $ignore Optional list of fields to ignore. + */ +function convertFieldsToAscii(&$item, $template=null, $default='', array $ignore=null) +{ + foreach ($item as $field => &$value) { + // Skip fields in the $ignore array. + if ($ignore && in_array($field, $ignore)) { + continue; + } + // Normalize non-ASCII characters with ASCII counterparts. + $value = squashCharacters($value); + // Replace fields that contain non-ASCII characters with a default. + if (mb_convert_encoding($value, 'ascii') !== $value) { + // If template is provided, use the template field, if set. + if ($template) { + if (is_object($template) && isset($template->{$field})) { + $value = $template->{$field}; + } elseif (is_array($template) && isset($template[$field])) { + $value = $template[$field]; + } else { + $value = $default; + } + } else { + $value = $default; + } + } + } +} +?> \ No newline at end of file diff --git a/index.php b/index.php index 563ce4e..2d9b105 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,7 @@ publish("/unhb/dfi/".$aktuelleZeile, trim($zeile), 0); + $mqtt->publish("/unhb/dfi/".$aktuelleZeile, squashCharacters(trim($zeile)), 0); $aktuelleZeile = $aktuelleZeile+1; }