2011-05-04 9 views
2

여기 해결책을 찾는 데 문제가 있습니다. for() 루프를 사용하여 페이지 제목을 반복하여 <span>에 싸인 할 수있는 WordPress 테마를 개발 중입니다. 수직으로 표시됩니다. 루프는 strlen()을 사용하여 제목의 길이를 찾습니다. 그러나 일부 페이지 제목에는 제목에 '...'또는 쉼표가 포함되어 있으므로 HTML 문자를 대신 반환합니다. 그 모든 노력을 통해 htmlspecialchars_decode() 또는 html_entity_decode() 작동하지 않습니다 .. 어떤 제안? 내가 알고있는 for 회 돌이에 무슨 일이 있습니까?strlen 및 특수 문자

가 여기에 요청 실제 코드입니다 이후 :

$p_title = get_the_title($port_page->ID); 
    $title = ''; 

    for($i=0;$i<strlen($p_title);$i++){ 
    if(($p_title[$i])){ 
    $title .="<span>$p_title[$i]</span>"; 
    } 

나뿐만 아니라 mb_strlen 사용하려고했습니다 .. 대체하는 특정 문자 검색의 문제는 반드시 페이지 이후 문제가 해결되지 않습니다 제목 임의로 ..

+1

'strlen()'을 정확히 수행하고있는 데이터를 표시 할 수 있습니까? 어쩌면 어떤 코드 일 수도 있습니다. –

+0

HTML 엔터티를 디코딩하거나 문자열에서 제거 하시겠습니까? 그것들을 제거하고 싶다면, 그것들을 해독해야하고, 그 후에 str_replace를 사용하여 제거해야합니다. –

+0

functions.php 파일을 검사하여 어쨌든 get_the_title() 함수를 필터링하고 변환하는 것이 있는지 확인하십시오. –

답변

1

이를

이상한 것은이 제목은 어떤 방식으로 인코딩 및 루프의 전에 일반적입니다 표시하지입니다 .. 사이트 소유자가 설정 .. 그래서 뭔가를 변환하는 것처럼 그건된다 캐릭터처럼 많이 들린다. er 인코딩 문제가 발생합니다. strlen()mb_strlen()으로 바꾸고 작업을 수행 할 수 있습니까?

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

+0

나는 성공하지 못했다. – Tim

4

strlen() 만 문자열에 바이트의 수를 반환합니다. 일부 특수 문자는 여러 바이트로 표시 될 수 있으며 유니 코드는 저작권 기호 ("©")와 같은 단일 '문자'를 여러 문자 (예 : &copy;)로 사용할 수 있습니다.

"..."(줄임표)는 예를 들어 special character in Unicode 일 수 있습니다.

는 신속하고 더러운 솔루션은 내가 제안 : 나는 당신의 문자열을 믿고있어

// Example string should be 1 character long, 6 bytes 
$text = "&copy;"; 
$bytes = strlen($text); 

mb_internal_encoding('UTF-8');  
$text = html_entity_decode($text, ENT_QUOTES, "UTF-8");     
$length = mb_strlen($text); 

print "String is ".$length." characters long, ".$bytes." bytes long"; 

참고 이미 UTF-8입니다. 그렇지 않은 경우 먼저 변환하십시오.