PHP: польские национальные знаки в $ _POST - неправильные значения strlen и mb_strlen - PullRequest
0 голосов
/ 02 января 2011

Я сейчас в отчаянии, потому что я перепробовал все, что нашел, и все еще не могу получить результаты, которые мне нужны очень быстро, потому что я пообещал исправить сайт друга.

вот проблема:

я получаю строку символов через $ _POST, и она должна быть:

  1. очищено от любых тегов html (я делаю это через strip_tags: хорошо работает)
  2. тогда, это должно быть ровно 1000 символов в длину и здесь, где моя боль начинается: он должен работать с многобайтовыми символами, такими как польские знаки.

сейчас я пытался обрезать текст:

  • mb_substr ($ это, 0,1000, 'UTF-8')
  • mb_substr ($ this, 0,1000)

и

  • зиЬзЬг ($ это, 0,10000)

и я всегда получаю неправильные результаты: конечная строка всегда короче 1000 символов, и я не знаю почему. Вы можете помочь мне с этим?

Может быть, это будет полезно:

Текст, который я вставляю в форму:

Ciekawy, nieco sportowy wygląd, nisko zamontowana kanapa, dobre hamulce, niezłe podwozie, znakomita zwrotność, dynamiczny silnik – oto cechy którymi GS500E zdobywał rynek i pokonywał rywali w testach porównawczych. W 1992 r. postawiono go nawet do konfrontacji z większą Yamahą XJ600S Diversion i nowocześniejszym Kawasaki GPZ500S. Co prawda przegrał, ale też nie było szans, by walczył jak równy z równym. Ważniejsze były oceny, które wystawili mu dziennikarze z prasy fachowej. Zaskoczeniem było przede wszystkim to, że tak tani motocykl może prezentować tak wysoki poziom w zakresie mocy i charakterystyki silnika. Chwalono również hamulce i podwozie. W drugiej połowie lat dziewięćdziesiątych GS500E zaczął wyraźnie przegrywać w testach porównawczych. Nie mógł już dotrzymać kroku zupełnie nowym konstrukcjom pokroju Hondy CB500 czy Kawasaki ER-5. Nadal cieszy się jednak zainteresowaniem nabywców a jako motocykl o bardzo uniwersalnym charakterze trafia zarówno w ręce początkujących jaki i doświadczonych motocyklistów.

тогда я хочу сократить его до макс. 1000 символов:

$ok_to_go_to_database = mb_substr( strip_tags($long_text) ,0,1000);

и в этом случае он возвращает мне 931 символов: /

1 Ответ

2 голосов
/ 02 января 2011
>>> len(u'Ciekawy, nieco sportowy wygląd, nisko zamontowana kanapa, dobre hamulce, niezłe podwozie, znakomita zwrotność, dynamiczny silnik – oto cechy którymi GS500E zdobywał rynek i pokonywał rywali w testach porównawczych. W 1992 r. postawiono go nawet do konfrontacji z większą Yamahą XJ600S Diversion i nowocześniejszym Kawasaki GPZ500S. Co prawda przegrał, ale też nie było szans, by walczył jak równy z równym. Ważniejsze były oceny, które wystawili mu dziennikarze z prasy fachowej. Zaskoczeniem było przede wszystkim to, że tak tani motocykl może prezentować tak wysoki poziom w zakresie mocy i charakterystyki silnika. Chwalono również hamulce i podwozie. W drugiej połowie lat dziewięćdziesiątych GS500E zaczął wyraźnie przegrywać w testach porównawczych. Nie mógł już dotrzymać kroku zupełnie nowym konstrukcjom pokroju Hondy CB500 czy Kawasaki ER-5. Nadal cieszy się jednak zainteresowaniem nabywców a jako motocykl o bardzo uniwersalnym charakterze trafia zarówno w ręce początkujących jaki i doświadczonych motocyklistów.'.encode('cp1250').decode('utf-8', 'ignore'))
929

И CRLF составляет 931.

Проверьте заголовки HTTP.Убедитесь, что вы действительно получаете данные в формате UTF-8, а не CP1250.

...