PHP 8.5.0 Alpha 1 available for testing

Voting

: zero minus zero?
(Example: nine)

The Note You're Voting On

visus at portsonline dot net
18 years ago
Following code helped me with mixed (UTF8+ISO-8859-1(x)) encodings. In this case, I have template files made and maintained by designers who do not care about encoding and MySQL data in utf8_binary_ci encoded tables.

<?php

class Helper
{
function
strSplit($text, $split = 1)
{
if (!
is_string($text)) return false;
if (!
is_numeric($split) && $split < 1) return false;

$len = strlen($text);

$array = array();

$i = 0;

while (
$i < $len)
{
$key = NULL;

for (
$j = 0; $j < $split; $j += 1)
{
$key .= $text{$i};

$i += 1;
}

$array[] = $key;
}

return
$array;
}

function
UTF8ToHTML($str)
{
$search = array();
$search[] = "/([\\xC0-\\xF7]{1,1}[\\x80-\\xBF]+)/e";
$search[] = "/&#228;/";
$search[] = "/&#246;/";
$search[] = "/&#252;/";
$search[] = "/&#196;/";
$search[] = "/&#214;/";
$search[] = "/&#220;/";
$search[] = "/&#223;/";

$replace = array();
$replace[] = 'Helper::_UTF8ToHTML("\\1")';
$replace[] = "ä";
$replace[] = "ö";
$replace[] = "ü";
$replace[] = "Ä";
$replace[] = "Ö";
$replace[] = "ü";
$replace[] = "ß";

$str = preg_replace($search, $replace, $str);

return
$str;
}

function
_UTF8ToHTML($str)
{
$ret = 0;

foreach((
Helper::strSplit(strrev(chr((ord($str{0}) % 252 % 248 % 240 % 224 % 192) + 128).substr($str, 1)))) as $k => $v)
$ret += (ord($v) % 128) * pow(64, $k);
return
"&#".$ret.";";
}
}

// Usage example:

$tpl = file_get_contents("template.tpl");
/* ... */
$row = mysql_fetch_assoc($result);

print(
Helper::UTF8ToHTML(str_replace("{VAR}", $row['var'], $tpl)));

?>

<< Back to user notes page

To Top