У меня возникает раздражающая ошибка PHP-уведомления с момента обновления до PHP 5.4. Я вижу, где это происходит, но у меня просто нет опыта, чтобы исправить код и остановить уведомление.PHP Примечание: Неинициализированное смещение строки 0
PHP Примечание: Uninitialized строка смещения: 0
Сво происходит на линии 108 кода, который на самом деле относится к этой линии: $contents[$o] = $this->unicode_entity_replace($contents[$o]);
Функция в вопросе заключается в следующем:
class unicode_replace_entities {
public function UTF8entities($content="") {
$contents = $this->unicode_string_to_array($content);
$swap = "";
$iCount = count($contents);
for ($o=0;$o<$iCount;$o++) {
$contents[$o] = $this->unicode_entity_replace($contents[$o]);
$swap .= $contents[$o];
}
return mb_convert_encoding($swap,"UTF-8");
}
Любая помощь или объяснение было бы очень оценено.
EDIT: Полный код для оставшейся части ниже класса (Извинения не был включен раньше):
public function unicode_string_to_array($string) { //adjwilli
$strlen = mb_strlen($string);
$array = "";
while ($strlen) {
$array[] = mb_substr($string, 0, 1, "UTF-8");
$string = mb_substr($string, 1, $strlen, "UTF-8");
$strlen = mb_strlen($string);
}
return $array;
}
public function unicode_entity_replace($c) { //m. perez
$h = ord($c{0});
if ($h <= 0x7F) {
return $c;
} else if ($h < 0xC2) {
return $c;
}
if ($h <= 0xDF) {
$h = ($h & 0x1F) << 6 | (ord($c{1}) & 0x3F);
$h = "&#" . $h . ";";
return $h;
} else if ($h <= 0xEF) {
$h = ($h & 0x0F) << 12 | (ord($c{1}) & 0x3F) << 6 | (ord($c{2}) & 0x3F);
$h = "&#" . $h . ";";
return $h;
} else if ($h <= 0xF4) {
$h = ($h & 0x0F) << 18 | (ord($c{1}) & 0x3F) << 12 | (ord($c{2}) & 0x3F) << 6 | (ord($c{3}) & 0x3F);
$h = "&#" . $h . ";";
return $h;
}
}
Не угадывайте и не заставляйте нас гадать, 'var_dump ($ contents, $ o)', чтобы увидеть, с чем вы пытаетесь работать здесь. – deceze
, пожалуйста, предоставьте код 'unicode_string_to_array' – maxpovver
Привет, спасибо за комментарии, полный код выше. – BottyZ