2016-11-04 2 views
0

플랫 파일에 제품 이름을 삽입 할 때 최대 50 자까지 잘라야합니다.인쇄 할 수없는 문자로 된 하위 문자열

그러나 일부 제품 이름에는 악센트가있는 문자가 포함되어 있으며 이러한 문자가 50 번째 위치 (또는 그 이상)에 있으면 잘린 제품 이름이 제대로 표시되지 않습니다.

$tmp = "Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC"; 
$xxx = substr(trim($tmp), 0, 50); 

echo $tmp . PHP_EOL; 
echo $xxx . PHP_EOL; 

표시 :

Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC 
Kaspersky Anti-Virus 2015 (Renovación) Suscripci� 

어떻게 이러한 비 표시 문자를 제거 할 수 여기에

이 문제 (PHP)를 복제하는 방법은?

+3

'mb_substr'로 –

+0

2 바이트로 멀티 바이트 문자를 자릅니다. 좋은 생각은 아프다. PHP의 문자열 함수의 멀티 바이트 변형을 사용하십시오. http://php.net/manual/de/ref.mbstring.php 문서를 참조하십시오. – arkascha

답변

1

당신은 substr 대신 mb_substr를 사용해야합니다 : 워드 프로세서

$tmp = "Kaspersky Anti-Virus 2015 (Renovación) Suscripción Anual 3 PC"; 
$xxx = mb_substr(trim($tmp), 0, 50); 

echo $tmp . PHP_EOL; 
echo $xxx . PHP_EOL; 

:

는 문자의 수에 따라 멀티 바이트 안전 SUBSTR() 작업을 수행합니다. 위치는 str의 시작 부분부터 계산됩니다. 먼저 문자의 위치는 0입니다. 두 번째 문자 위치는 1이며, 계속 계속됩니다.

관련 문제