【问题标题】:PHP: polish national signs in $_POST - strlen and mb_strlen wrong valuesPHP:$_POST 中的波兰国家标志 - strlen 和 mb_strlen 值错误
【发布时间】:2011-06-02 08:58:44
【问题描述】:

我现在很绝望,因为我尝试了我找到的所有东西,但仍然无法很快得到我需要的结果,因为我答应纠正朋友的网站。

问题来了:

我通过 $_POST 得到一个字符串,它必须是:

  1. 从任何 html 标签中清除(我通过 strip_tags 进行:效果很好)
  2. 那么,它的长度必须正好是 1000 个字符,而我的痛苦从这里开始:它必须与多字节字符(例如波兰符号)一起使用。

现在我尝试用以下方式剪切文本:

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

  • substr($this,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 个字符:/

【问题讨论】:

  • 那么,传入的字符串是否超过1000个字符?
  • 嗨 Pekka,它总是更短:我不知道那些额外的标志是什么:/,如果我将 1613 个字符的长文本复制并粘贴到表单中,mb_strlen 显示这个长度:1733如果我用 mb_substr($this,0,1000) 剪切它,我得到的只是前 929 个字符 - 我很困惑
  • 标题说传入的字符集是什么?
  • 嗨,Ignacio,该页面设置为 UTF-8,但如果您指的是字符串本身的字符集 - 我不知道如何检查它
  • sorry Pekka:你问到传入的字符串:是的,它比 1000 长

标签: php post utf-8 substr


【解决方案1】:
>>> 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。

Check your HTTP headers. Make sure that you are really receiving data in UTF-8 and not CP1250.

【讨论】:

  • 感谢朋友们!现在有新的事情要考虑。是的 - strlen 中的长度确实是正确的,可以解决这个问题,有一个最好的一年,很多美元,女孩和杂草 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 2017-04-26
相关资源
最近更新 更多