[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: substr и mb_substr не режут ровно текст
Nuzhser
sad.gif Сначала юзал substr($text, 0, 80); потом mb_substr($text, 0, 80, 'utf8'); но на вывод выходят неодинаковые строки, которые по идее полученные из базы большими в цикле должны обрабатыватся этими функциями и выводиться меньшими но одинаковыми по длине.
Результат здесь
http://www.marketsite.byethost12.com sad.gif



Спустя 34 минуты, 59 секунд (16.06.2010 - 14:53) Nikitian написал(а):
Покажите полный код как вытягиваете и обрабатываете. Есть подозрения, что что-то забыли.

Спустя 5 минут, 3 секунды (16.06.2010 - 14:59) tomash написал(а):
вы уверены что у вас кодировка Юникод?

Спустя 18 минут, 7 секунд (16.06.2010 - 15:17) Nuzhser написал(а):
СКЛ запрос
$stql="SELECT * FROM texts where content LIKE '%$request%'";

обьект ПДО
$base=new PDO('mysql:host=heremyhostname;dbname=heredbname', 'login', 'password');

Чарсет
$ut=$base->prepare("set names utf8; SET COLLATION_CONNECTION=utf8_general_ci; SET CHARACTER_SET_CLIENT=UTF8; SET CHARACTER_SET_RESULTS=UTF8;");
$ut->execute();
$ut->closeCursor();

Окончательная подготовка скл запроса
$stmt = $base->prepare("{$stql} order by id desc limit {$lr},{$lm};");

переработка строк в цикле
if ($stmt->execute(array())) {if(!isset($brk))$brk=1;
while ($gr = $stmt->fetch())
{
$ua=mb_strcut($gr['content'], 0, 130, 'utf8');
echo $ua;
}

В пхпМойАдмин стоит коллайшн utf8_general_ci для базы таблицу тоже создавал в УТФ-8
Не будь правильной кодировки были бы кракозябры на сайте biggrin.gif а так строки как трава в лесу.

Спустя 36 минут, 41 секунда (16.06.2010 - 15:53) Nuzhser написал(а):
Я только что попробовал вот такой код
<?php
$hg='Они вроде застеснялись. Дескать, мы и так, наша святая обязанность и так далее. За инструмент хватаются. ';


$fg='А они то с ходу за сверло хватались, а теперь им, видите ли, расхотелось. Ученик мне про какую-то Надю треплется. ';

$ff='Но или дырка вышла маловата, или она засорилась — не лезет кабель. Хотел я отверстие пальцем расчистить. ';

$gt = substr ($hg, 0, 130); echo $gt . "<br>";
$gw = substr ($fg, 0, 130); echo $gw . "<br>";
$ge = substr ($ff, 0, 130); echo $ge . "<br>";
?>


и вышло в броузере

Они вроде застеснялись. Дескать, мы и так, наша святая обязанность и та�
А они то с ходу за сверло хватались, а теперь им, видите ли, расхотелось.
Но или дырка вышла маловата, или она засорилась — не лезет кабель. Хоте�

Спустя 34 минуты, 43 секунды (16.06.2010 - 16:28) tomash написал(а):
Вместо mb_strcut используйте mb_substr
Тут проблема что в Юникоде символы кирилицы из 3 байт

Спустя 57 секунд (16.06.2010 - 16:29) DedMorozzz написал(а):
$gt = mb_substr ($hg, 0, 15, 'UTF-8'); echo $gt . "<br>";
а так?

Спустя 42 минуты (16.06.2010 - 17:11) Gabriel написал(а):
а прям в БД текст порезать?

Спустя 30 минут, 47 секунд (16.06.2010 - 17:42) Nuzhser написал(а):
to DedMorozzz получилось типа, все равно не ровно
я правда ставил длину не 15 а 30ё
Здесь по идее в третьем ряду слова он в конце не должно бы быть

Они вроде застеснялись. Дескать, м
А они то с ходу за сверло хватались
Но или дырка вышла маловата, или он

To Gabriel
А это мысль. Если еще по имплементейшину подсказку дашь может таки выберусь из болота.

Спустя 3 минуты, 47 секунд (16.06.2010 - 17:46) DedMorozzz написал(а):
Цитата
"я правда ставил длину не 15 а 30"
- а кодировка текста в УТФ-8? Ибо я твой пример скопипастил и проверил. С 30 тоже(!!) проверял, всё норм!

Спустя 2 минуты, 6 секунд (16.06.2010 - 17:48) tomash написал(а):
DedMorozzz
у меня тоже все режет ровно!

Спустя 8 секунд (16.06.2010 - 17:48) DedMorozzz написал(а):
$hg='Они вроде застеснялись.  Дескать, мы и так, наша святая обязанность и так далее. За инструмент хватаются. ';


$fg='А они то с ходу за сверло хватались, а теперь им, видите ли, расхотелось. Ученик мне про какую-то Надю треплется. ';

$ff='Но или дырка вышла маловата, или она засорилась — не лезет кабель. Хотел я отверстие пальцем расчистить. ';

$gt = mb_substr ($hg, 0, 30, 'UTF-8'); echo $gt . "<br>";
$gw = mb_substr ($fg, 0, 30, 'UTF-8'); echo $gw . "<br>";
$ge = mb_substr ($ff, 0, 30, 'UTF-8'); echo $ge . "<br>";

/*
Они вроде застеснялись. Деска
А они то с ходу за сверло хват
Но или дырка вышла маловата, и
*/

Спустя 4 минуты, 45 секунд (16.06.2010 - 17:53) tomash написал(а):
Nuzhser
может у тебя php-проект твой в 1251????

Спустя 8 минут, 26 секунд (16.06.2010 - 18:01) Nuzhser написал(а):
То есть я создал файл на локал хосте а потом залил на сайт и там и тут одинаково тютилька в тютильку шо сам файл в неверной кодировке? Но при попытке сохранить как показывает утф-8. Базы данных вообще не участвовали.

tomash че то я не помню но ставил я все в УТФ вроде бы где можно увидеть а то в пхп ини не нашел и в апаче конфиге нету

Спустя 6 минут, 22 секунды (16.06.2010 - 18:07) DedMorozzz написал(а):
открой в нот паде, и выбери "кодировка текста" иль как-то так. Там выбери УТФ-8 без BOM

Спустя 9 минут, 4 секунды (16.06.2010 - 18:16) tomash написал(а):
Я просто немогу понять! Хотя где то проскакивало что PHP 5.2.6 что то с этими функциями не гладко! mb_substr

Спустя 9 минут (16.06.2010 - 18:25) Gabriel написал(а):
Nuzhser
если текст нужно резать по кл-ву символов то нужно немножко переделать запрос.
SELECT * FROM SUBSTRING(0, x, texts ) AS text where content LIKE '%$request%';


в индексе text будет текст в котором будет x символов (х ставиш сам) после 0-вого.
P.S.кажись так если не ошибаюсь давно эту функцию не пользую.

Спустя 6 минут, 48 секунд (16.06.2010 - 18:32) Nuzhser написал(а):
Зашел в нотепад++ пересохранил файл без БОМ залил на сайт по этому адресу и результат тот же, киньте мне свою копию я закину на хост у себя попробую как это у вас идет у меня нет

http://www.marketsite.byethost12.com/substr.php

Спустя 7 минут, 16 секунд (16.06.2010 - 18:39) DedMorozzz написал(а):
лови

Спустя 4 минуты, 17 секунд (16.06.2010 - 18:44) DedMorozzz написал(а):
перезалил. ПХП файл открывало. Ща залил ЗИП, его качает. Вобщем - дерзай

Спустя 22 минуты, 49 секунд (16.06.2010 - 19:07) Nuzhser написал(а):
to Gabriel
SELECT id, LEFT(text, 100) from table; и тогда обрезанный будет в переменной под индексом [1]
работает так но всеравно неровно
Может то что текст не вводился в форме вручную при добавке в базу а копировался с других сайтов?

Спустя 10 минут, 51 секунда (16.06.2010 - 19:17) Nuzhser написал(а):
Залил тест.пхп на хост не ровно выдает дома тоже самое

Они вроде застеснялись. Деска
А они то с ходу за сверло хват
Но или дырка вышла маловата, и

Попробую потом набрать вручную несколько обьявлений и посмотрю будет ли что меняться.

Хоть Мускула поучил biggrin.gif huh.gif sad.gif unsure.gif smile.gif

Спустя 1 минута, 43 секунды (16.06.2010 - 19:19) waldicom написал(а):
Цитата (Nuzhser @ 16.06.2010 - 18:17)
Они вроде застеснялись. Деска
А они то с ходу за сверло хват
Но или дырка вышла маловата, и

хокку?


_____________
Лэт ит би
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.