Php: правильно считаем количество символов в строке (страница комментариев 3)

23 апреля 2012. Рубрики: Рабочие заметки; автор — Юлия Панина aka Княгиня.

Когда-нибудь видели на сайтах предупреждение: «Длина сообщения не более…» например, 500 символов? Начинаешь писать, честно укладываешься в 450 символов, а при отправке получаешь отлуп: слишком длинное сообщение…Если вы догадаетесь сократить сообщение до 250 символов или использовать транслит, сообщение всё-таки удастся отправить, но остаётся желание кого-то взять за грудки и сказать: что ж ты, милый, людям голову-то морочишь?!..На самом деле это означает, что «на той стороне» сидит несведущий вебмастер. Может, он иностранец и не знает, что такое кириллица, а может, из наших палестин недоучка. Причина такого расхождения в обещанной и реальной длине — размер кириллических символов в UTF-8: по  Читать полностью »

29 комментариев на «Php: правильно считаем количество символов в строке»
  1. Андрей

    Эти функции считаю символ » (двойной кавычки) как 6 символов
    А символ & как 5. Походу спецсимволы тоже неправильно считают.

    Ответить на этот комментарий
  2. Tim

    =) Спасибо, никак не мог найти правильного решения! А тут просто и ясно! Спасибочки

    Ответить на этот комментарий
  3. sahabond (3 комментария)

    Да пока не сталкивался но буду в курсе теперь спасибо!

    Ответить на этот комментарий
  4. 1 (1 комментарий)

    *HELP* *DRINK* :-D :P 8) :-! ]:-> *KISSED* *WASSUP* *MACHO* *HELP* @= *DRINK* *THUMBS UP* *ROSE* *KISSING* просто вспомнил аську))

    Ответить на этот комментарий
  5. Мак (3 комментария)

    Давно занимаюсь php и при необходимости обрезать текст для создания «вступления» всегда иду дальше чем просто обрезать нужное количество символов, ибо:
    1) вы обрезаете чаще посреди слова — это не красиво
    2) обрезать можно сразу после знака препинания, тире
    3) часто обрезка под точное кол символов не так критична
    Поэтому! Я обрезаю по словам!)
    кратко:
    1) разбиваю нужный текст на массив по разделителю «пробел»
    2) беру нужное количество слов и склеиваю их пробелом (беру обычно что среднее русское слово — 6 букв)
    3) ставлю регулярку чтобы обрезать знаки препинания и пробелы в конце оборванного предложения

    Ответить на этот комментарий
    • Княгиня (660 комментариев)

      Ага, и мне при допиле шаблонов блога тоже пришлось этим заниматься — просчётом до того места, где находится ближайший пробел. Но я подходила с другой стороны.

      Ответить на этот комментарий
  6. Владимир

    Самый пиздец — это когда вебмастер лочит копирование в буфер, и приходится куски кода перевбивать вручную, вместо того чтобы просто скопировать.

    Ответить на этот комментарий
  7. Николай (1 комментарий)

    Вот такая строка

    $str=ЗАО «Хлебокомбинат «ПЕКО». Мы понимаем, что птицефабрика тут не при чем. Однако, мы хотим тут пройти разные тесты, поэтому пишем такие странные вещи!

    В ней на Delphi четко получаю количество символов 149, можно ручками посчитать и убедиться, что это так.
    А вот ваши хваленые mb_strlen($str,’UTF-8′) и iconv_strlen($str,’UTF-8′) обе дают 164!!!

    И что тут думать? Может, у меня PHP кривой (Apache/2.4.16 (Win64) PHP/5.6.14)? или я слепой? Вот сижу и думаю думу.

    Ответить на этот комментарий
    • Княгиня (660 комментариев)

      Это вы мне претензии предъявляете? А как насчёт создателей php?

      Ответить на этот комментарий

Есть что сказать? Не молчим!

Используйте теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" code=""> <ul> <li> <ol> .

Комментарии короче 200 символов публикуются без активной ссылки. Пробелы не учитываются.

Ссылки с комментариев dofollow. Ознакомьтесь, пожалуйста, с правилами dofollow-комментирования. Кто не читает, тот сам себе враг.