2017-03-16 1 views
0

substr() 대신 25SUBSTR()는

$nature_goods의 28 개 문자를 반환하는 사용자가 특수 문자가 포함 된 문자열을 입력 할 수있는 입력 필드를, 문자의 수를 잘못되어 돌아갑니다.

코드

$nature_goods = "Nature quantityyy of goods is nice 120pcs 1*X23X24898"; 
echo strlen($nature_goods); 
echo "<br>"; 
echo substr($nature_goods, 0,25); 
echo "<br>"; 
echo strlen(substr($nature_goods, 0,25)); 
echo "<br>"; 
echo substr($nature_goods, 25,50); 
echo "<br>"; 
echo strlen(substr($nature_goods, 25,50)); 
echo "<br>"; 

출력

53 
Nature quantityyy of good 
25 
s is nice 120pcs 1*X23X24898 
28 

내가 mb_substr()mb_strlen()을했지만, 내가 어떤 멀티 바이트 문자열 문제를 만들어 볼 수 없습니다. 누군가 실수를 지적 할 수 있습니까?

+0

실수가 없습니다. 결과는 정확합니다. 'substr ($ nature_goods, 25,50); '만 28을 반환합니다 – bansi

+0

그러나 substr (25,50)은 25 문자를 반환해야합니까? –

+2

아니요, 25 번째 위치에서 최대 50자를 반환합니다. [manual] (http://php.net/manual/en/function.substr.php) 만 확인하면 25 자만 있으면 substr ($ nature_goods, 25,25); – bansi

답변

0

substr을 잘못 사용하고 있습니다.

마지막으로 사용 된 값은 substr을 사용하는 대신 25에서 50 사이의 문자를 가져 오는 것과 같이 길이가 아니라 끝점으로 사용됩니다. 그것은 처음 25자를 건너 뛰고 나서 50자를 차지합니다.

마지막 함수 호출은 substr ($ nature_goods, 25, 25)이어야합니다. 당신이 25 문자를받을 것으로 예상하는 경우.

SUBSTR (문자열 $ 문자열, INT의 $ 시작, INT의 $ 길이) 여기

전체 문서 : SUBSTR에서

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