使用子串时出现稀有字符

用户8348171

我知道这似乎是一个编码问题,我不这么认为。我有一个网站,当用户保存他们的工作时,人们使用 ckeditor 发布一些长文本(故事),一些 HTML 进入数据库,该数据库为所有表的 utf8 编码做好准备。

对于所有帖子,我生成一个“文本缩略图”,它是全文的一个片段,全文看起来不错,在所有页面中我都使用 utf-8。

我用来获取“文本缩略图”的代码:

     <?php
     $str = trim(strip_tags(nl2br($historia['texto']))); //get only text
     echo substr($str, 0, 99) . (strlen($str) > 100 ? '...' : ''); //get part of string, if original string was longer than 100 characters add 3 dots at the end
     ?>

到目前为止,我已经运行该站点一个多月了,问题出现在下一个要处理的特定字符串上

<p>Foto artística<br>Mi esposo invito uno de sus viejos amigos a casa, un
   hombre muy impresionante, llegó en un auto de lujo, vistiendo finas ropas, 
   reloj de plata, cadenas de oro y cosas impresionantes, el nos platico de 
   muchas de las cosas a las que se dedico desde que perdió la comunicación 
   con mi esposo, desde ayudante de cocina hasta productor de películas 
   independientes que había logrado vender por sumas importantes de dinero,
   el motivo de su visita era porque necesitaba a alguien como mi esposo 
   para salir en una de sus filmaciones, a cambio recibiría una buena 
   cantidad de dinero, clases de actuación y otros beneficios, claro que 
   aceptamos sin pensarlo.</p>

当我使用上面的 php 代码处理它时,我得到以下结果:

艺术照我丈夫邀请他的一位老朋友来我家,一个非常令人印象深刻的人,他到了......

具体的最后一个单词是重音的llegó,同一个字符串中的其他单词和“文本缩略图”等artística没有同样的问题,似乎最后的重音字母有问题,我尝试使用一些php函数来尝试在使用前对字符串进行编码/解码,substring但我没有得到任何结果,如果您能以某种方式指导我解决问题,请执行此操作。

这是在线编辑器中行为相同的 php 代码https://ideone.com/m6OjUN

哈捷涅夫

substr对字节进行操作。你给它一个多字节的字符串,这不是一个好主意。该字符ó有 1 个以上的字节,您可以在该字符的字节之间的位置准确地拆分字符串,这会破坏该字符。试试吧mb_substr

https://3v4l.org/jkAnv

<?php
$input = '<p>Foto artística<br>Mi esposo invito uno de sus viejos amigos a casa, un hombre muy impresionante, llegó en un auto de lujo, vistiendo finas ropas, reloj de plata, cadenas de oro y cosas impresionantes, el nos platico de muchas de las cosas a las que se dedico desde que perdió la comunicación con mi esposo, desde ayudante de cocina hasta productor de películas independientes que había logrado vender por sumas importantes de dinero, el motivo de su visita era porque necesitaba a alguien como mi esposo para salir en una de sus filmaciones, a cambio recibiría una buena cantidad de dinero, clases de actuación y otros beneficios, claro que aceptamos sin pensarlo.</p>';
     $str = trim(strip_tags(nl2br($input))); //get only text

     echo mb_substr($str, 0, 99) . (mb_strlen($str) > 100 ? '...' : ''); //get part of string, if original string was longer than 100 characters add 3 dots at the end
     ?>

如果你想知道一个字符/字符串有多少字节,使用 strlen

https://3v4l.org/AKHid

<?php
var_dump(strlen('ó'));

参考:

http://php.net/manual/en/function.substr.php

http://php.net/manual/en/function.mb-substr.php

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当字段有选择时,Django模型保存稀有字符串

来自分类Dev

使用Python查找稀有字符

来自分类Dev

使用子字符串扩展操作 bash 变量字符串时出现“权限被拒绝”

来自分类Dev

无法在RStudio中使用稀有字符获取skript

来自分类Dev

无法在RStudio中使用稀有字符获取skript

来自分类Dev

GCM registrationId稀有字符

来自分类Dev

GCM registrationId稀有字符

来自分类Dev

使用子字符串查看字符串是否在批处理文件中包含子字符串时出现问题

来自分类Dev

在Python 3中使用子字符串函数时出现TypeError

来自分类Dev

如何删除所有出现的字符/子字符串?

来自分类Dev

Python3.x-使用字典计算所有子字符串的出现

来自分类Dev

替换子字符串中所有出现的子字符串,但“

来自分类Dev

使用递归将一个子字符串的所有出现替换为另一个子字符串

来自分类Dev

使用递归将一个子字符串的所有出现替换为另一个子字符串

来自分类Dev

计算字符串包含子字符串时的出现次数

来自分类Dev

每次出现 @ 时在 Powershell 中拆分字符串并保存子字符串

来自分类Dev

使用awk删除多次出现的子字符串

来自分类Dev

使用Powershell提取子字符串的多次出现

来自分类Dev

使用awk删除多次出现的子字符串

来自分类Dev

没有结果时,按使用子字符串的列进行分组失败

来自分类Dev

有矢量时如何在R中使用子字符串函数?

来自分类Dev

c - 如何在c中多次出现'/'时使用strchr获取子字符串并将其存储在变量中

来自分类Dev

如何查找和替换字符串中所有出现的子字符串?

来自分类Dev

字符串中所有出现的子字符串

来自分类Dev

查找给定字符串中所有子字符串的出现

来自分类Dev

查找字符串中所有出现的分割子字符串

来自分类Dev

Python Regex:提取字符串中所有出现的子字符串

来自分类Dev

从java中的字符串替换子字符串的所有出现

来自分类Dev

查找给定字符串中所有子字符串的出现

Related 相关文章

  1. 1

    当字段有选择时,Django模型保存稀有字符串

  2. 2

    使用Python查找稀有字符

  3. 3

    使用子字符串扩展操作 bash 变量字符串时出现“权限被拒绝”

  4. 4

    无法在RStudio中使用稀有字符获取skript

  5. 5

    无法在RStudio中使用稀有字符获取skript

  6. 6

    GCM registrationId稀有字符

  7. 7

    GCM registrationId稀有字符

  8. 8

    使用子字符串查看字符串是否在批处理文件中包含子字符串时出现问题

  9. 9

    在Python 3中使用子字符串函数时出现TypeError

  10. 10

    如何删除所有出现的字符/子字符串?

  11. 11

    Python3.x-使用字典计算所有子字符串的出现

  12. 12

    替换子字符串中所有出现的子字符串,但“

  13. 13

    使用递归将一个子字符串的所有出现替换为另一个子字符串

  14. 14

    使用递归将一个子字符串的所有出现替换为另一个子字符串

  15. 15

    计算字符串包含子字符串时的出现次数

  16. 16

    每次出现 @ 时在 Powershell 中拆分字符串并保存子字符串

  17. 17

    使用awk删除多次出现的子字符串

  18. 18

    使用Powershell提取子字符串的多次出现

  19. 19

    使用awk删除多次出现的子字符串

  20. 20

    没有结果时,按使用子字符串的列进行分组失败

  21. 21

    有矢量时如何在R中使用子字符串函数?

  22. 22

    c - 如何在c中多次出现'/'时使用strchr获取子字符串并将其存储在变量中

  23. 23

    如何查找和替换字符串中所有出现的子字符串?

  24. 24

    字符串中所有出现的子字符串

  25. 25

    查找给定字符串中所有子字符串的出现

  26. 26

    查找字符串中所有出现的分割子字符串

  27. 27

    Python Regex:提取字符串中所有出现的子字符串

  28. 28

    从java中的字符串替换子字符串的所有出现

  29. 29

    查找给定字符串中所有子字符串的出现

热门标签

归档