2014-02-25 2 views
0

단어 문자열의 왼쪽 가운데 문자 주위에 HTML 태그를 넣을 수 있기를 원합니다. 아주 간단하게 들리지만 가장 일반적인 단어를 모두 설명하는 방법을 모르겠습니다.문자열의 중간 문자를 수정하는 더 나은 방법은?

<?php 
    $word = 'WONDERLAND'; 
    $wlen = strlen($word); 
    $lPad = floor($wlen/2)+1; 
    $rPad = ceil($wlen/2); 
    $left = substr($word, 0, -$lPad); 
    $middle = substr($word, -$lPad, 1); 
    $right = substr($word, -$rPad, $lPad); 
    echo $left.$middle.$right; 
?> 

출력 :

WONDERLAND 

또는

$left(WOND).$middle(E).$right(RLAND) 

을 싶습니다 여기

내가 달성하기 위해 노력하고있어의 예로서 가지고있는 PHP이다 중간 문자 (짝수 문자의 단어 인 경우 중간 문자 두 개 중 가장 왼쪽)를로 굵게 만들 수 있습니다태그를 사용하고이 단어로 그렇게 할 수 있습니다. 더 작은 다른 단어를 시도 할 때 문제가 발생합니다. 모든 단어 길이에 대해 if 문장을 만들어야합니까? 아니면 더 좋은 방법이 있을까요?

+0

귀하의 "출력"예상 결과에 관해서는 명확하지 않다. 그리고 나는 짝수 카운트를 가진 단어에서 "중간 캐릭터"라고 가정하고, 당신은 중간의 두 "ER"을 의미할까요? – Scuzzy

+0

명확성을 위해 업데이트되었습니다. 고맙습니다. – Jason

+0

문자 하나를 입력하면 어떤 출력을 기대합니까? –

답변

2
내가 중간에 캐릭터를 만들 수 있도록하고 싶습니다

( 도 문자 단어의 경우, 가장 왼쪽 두 개의 중간 문자의) 대담한 태그와 함께 이 단어로 그렇게 할 수 있습니다 . 다른 작은 단어를 시도하면 문제가 발생합니다. 모든 단어 길이에 대해 문장을 작성해야합니까? 아니면 더 좋은 방법이 있을까요?

질문을 바탕으로,이 더 적절해야 안 ​​:

$aWord[] = 'A'; 
$aWord[] = 'AB'; 
$aWord[] = 'ABC'; 
$aWord[] = 'ABCD'; 
$aWord[] = 'ABCDE'; 
$aWord[] = 'ABCDEF'; 
$aWord[] = 'ABCDEFG'; 
$aWord[] = 'ABCDEFGH'; 
$aWord[] = 'ABCDEFGHI'; 
$aWord[] = 'ABCDEFGHIJ'; 

foreach ($aWord AS $nPos => $word) 
{ 
    $wlen = strlen($word); 
    $lPad = floor($wlen/2)+1; 
    $rPad = ceil($wlen/2); 
    $left = substr($word, 0, -$lPad); 
    $middle = substr($word, -$lPad, 1); 
    $right = substr($word, $rPad, $lPad); 
    echo "$left<b>$middle<b>$right\n"; 
} 

출력 :

<b>A<b> 
<b>A<b>B 
A<b>B<b>C 
A<b>B<b>CD 
AB<b>C<b>DE 
AB<b>C<b>DEF 
ABC<b>D<b>EFG 
ABC<b>D<b>EFGH 
ABCD<b>E<b>FGHI 
ABCD<b>E<b>FGHIJ 
+0

예, 그렇습니다. 나와 함께 견디고 나를 똑바로 세워 줘서 고마워. – Jason