PHP:$_POST 中的波兰国家标志 - strlen 和 mb_strlen 值错误

发布于 2024-10-09 19:46:58 字数 1696 浏览 4 评论 0原文

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

问题是:

我通过 $_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 个字符:/

i'm in desperate now cause i tried everything i found and still can't get results that i need very quickly cause i promissed to correct friend's website.

here's the problem:

i get a characters string via $_POST and it needs to be:

  1. cleaned from any html tags (i do it through strip_tags : works good)
  2. then, it needs to be exactly 1000 characters long and here where my pain begins: it must work with multi-byte characters such as Polish signs.

right now i tried to cut the text with:

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

and

  • substr($this,0,10000)

and i always get wrong results: the final string is always shorter than 1000 characters and i don't know why. can you help me with this one?

Maybe this will be usefull:

The text i paste to the form is:

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.

then i wnt to cut it to max 1000 characters:

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

and in this case it gives me back 931 characters :/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟若柳尘 2024-10-16 19:46:58
>>> 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 格式的数据。

>>> 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

And the CRLF makes 931.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文