Re: Postgresql: ilike в utf8 не работает.
В сообщении от 1177717475 секунд после начала Эпохи Strong написал(а):
> А вот, ещё наткнулся на проблему в перле: если я пытаюсь теперь
> выделить в результате поиска искомое, в html-формате, то:
>
> 1. $tmp[0]=~s#$req#<font style="color: \#cc0000">$req</font>#ig; - не
> срабатывает (здесь в tmp - ответ БД, req - запрос формы html c
> charset=UTF-8),
Точно не скажу, давно уже Перлом не пользуюсь. Во первых, в Перле 5.X
есть два типа строк: строки, закодированные юникодом и строки,
представляющие байты (или октеты, как кому больше нравится). Убедитесь
что в $tmp[0] и $req используется один и тот же тип строки, и если там
просто байты, убедитесь что они в одинаковой кодировке. Во вторых,
пропустите шаблон через функцию quote().
my $req_quoted = quote($req);
$tmp[0] =~ s#$req_quoted#<font и т.д.
A вообще такие вещи нужно делать используя DOM, а не HTML-код,
содержащийся в строке. Ведь где гарантия что подстрока, соответствующая
шаблону в $req не встретится в атрибуте? Например, было
<a title="Превед" href="/">Медвед</a>
а стало
<a title="<font style="color: #cc0000">Превед</font>">Медвед</a>
В третьих, зачем использовать <font style="color: #cc0000">, если можно
<font color="#cc0000"> ?