나는 그것이 인코딩 문제처럼 보인다는 것을 알고 있지만 그렇게 생각하지 않습니다. 사용자가 작업을 저장할 때 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
하지만 결과를 얻지 못했습니다. 어떻게든 저를 솔루션으로 안내할 수 있다면 그렇게 하십시오.
다음은 온라인 편집기 https://ideone.com/m6OjUN 에서 동일한 방식으로 작동하는 PHP 코드입니다.
substr
바이트에서 작동합니다. 좋은 생각이 아닌 멀티 바이트 문자열을 제공합니다. 문자에 ó
1바이트 이상이 있으면 문자를 나누는 이 문자의 바이트 사이의 위치에서 문자열을 정확히 분할합니다. mb_substr
대신 시도 :
<?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
<?php
var_dump(strlen('ó'));
참조:
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다