Читайте нас также в жж



Архивы


Всего постов

3689
Фотографии животных

Алтай

Томск

Фотографии природы

Вытряснуло всю душу – кто поможет?

29.08.2013

С десяток часов потратил на этот бред:
входит в php


проходит через перевёртыватель

function utf8_entities_strrev($str, $preserve_numbers = true)
{

$parts=Array();
$str=trim($str);
$str=preg_replace(“/  +/”,””,$str);

while ($str)
{
if (preg_match(‘/^([0-9]+)(.*)$/’,$str,$m))
{

$parts[]=$m[1];
$str=$m[2];
}
elseif (preg_match(‘/^([a-zA-Z]+)(.*)$/’,$str,$m))

{

$parts[]=$m[1];
$str=$m[2];
}
else
{
$parts[]=substr($str,0,1);
$str=substr($str,1);
}
}
$str=implode(array_reverse($parts),””);
return $str_print;
}

выходит на Imagettftext($im, 20, 0, $start_x, $start_y, $black, $font,$str_print;


Задача функции – перевернуть исключительно ивритский текст, чтобы впечатать ивритский текст+цифры+английский текст
в файл jpg
Как видно сверху функция не просто добавляет какие-то бешенные символы в бешенной кодировке, но и отрезает первый знак к ебеням.
Альтернативой функции является бешенная надстройка из javascript+jquery (до отправки POST), первая часть которой работает и уже есть, но эта надстройка мне не видится надёжной.

Кто понял, чо за фигня?

 

 

( 7 comments — Leave a comment )

nik_karpachov 

Aug. 29th, 2013 02:09 pm (UTC)
От прочитанного у меня произошли не вполне алгометрируемые возмущения в сверх сложных логических комплексах.Однако. Проанализировав Ваш текст,пришел к выводу:- о нерентабельности переброски маломолекулярных соединений из дисерта в мелко дисперстную тару.
Других идей и решений не имею.

olegg_lieangel 

Aug. 31st, 2013 01:37 pm (UTC)

Не знаю, как с ивритом и PHP, но сталкивался с подобной задачей для фарси (делали для старых андроидов BiDi руками из говна и палок).

Там была суть в том, что код символа может меняться в зависимости от того, какой у него символ рядом идёт. То есть есть базовый код и есть несколько дополнительных, которые могут быть выбраны как раз в зависимости от того, какую связку надо с соседом сделать. Поэтому там при “перевороте” строки приходилось перегонять все символы в базовые, затем руками эти связки проставлять.

Возможно, тут другая собака порылась (в фарси-то вязь, а тут символы всё-таки неслитные), но стоит покопаться именно в сторону того, как юникод или какая ещё больная собака отрабатывает именно последовательности символов

_steppenwolf 

Aug. 31st, 2013 06:26 pm (UTC)
жесть
Читает по два символа
$parts[]=mb_substr($str,0,2);
$str=mb_substr($str,2);и chr не работает

function uchr ($codes) {
if (is_scalar($codes)) $codes= func_get_args();
$str= ”;
foreach ($codes as $code) $str.= html_entity_decode(‘&#’.$code.’;’,ENT_NOQUOTES,’UTF-8′);
return $str;
}

_steppenwolf 

Aug. 31st, 2013 06:27 pm (UTC)
у меня было подозрение, что там не один символ, но не хотелось верить.
Спасибо ага.

olegg_lieangel 

Sep. 1st, 2013 09:57 am (UTC)
А, ну то, что посимвольно юникод разворачивать нельзя — это давно известная печалька. Тут я просто в PHP ниалё, как там в кишках всякие substr устроены.

_steppenwolf 

Sep. 1st, 2013 11:28 am (UTC)
Да, я смутно помню, что читал что-то про это и как бы это совершенно логично.
Удивительно однако, что код работает после того, как я всобачил в него запятую в совершенно левом месте (до этого не работал)

_steppenwolf 

Sep. 1st, 2013 12:35 am (UTC)
вот работает теперь
function utf8_entities_strrev1($str, $preserve_numbers = true)
{
//работает и похуй как$parts=Array();

$str=trim($str);

while ($str)
{
if (preg_match(‘/^([a-zA-Z0-9]+)(.*)$/’,$str,$m))

{

$parts[]=$m[1];
$str=$m[2];

}

elseif (preg_match(‘/^(,|ת|ש|ר|ק|צ|ץ|פ|ף|ע|ס|נ|ן|ם|כ|ל|ך|א|ב|ג|ד|ה|ו|ז|ח|ט|י|נ|מ+)(.*)$/’,$str))
{

$parts[]=mb_substr($str,0,2);
$str=mb_substr($str,2);

}
else
{
$parts[]=substr($str,0,1);
$str=substr($str,1);
}

}

$str=implode(array_reverse($parts),””);

return $str;
}

  • Добавить в livejournalLivejournal
Новосибирен
  • комментариев 0
  • смотрело: 4

Comments

comments

РЕПОРТАЖИ // СТАТЬИ // НОВОСТИ
Рецензии к фильмам
Культура
Статьи, аналитика, обзоры, репортажи
Хватит кормить Москву!
Монстрации в Новосибирске
Исторические фотографии - архивы - Новосибирск
Круглые столы