2014-02-25 64 views
0

我希望能够在字符串的左中字符周围放置HTML标签。这听起来很简单,但我不知道如何解释所有最常见的单词。更好的方法来修改字符串的中间字符?

这里是PHP我是什么,我试图完成一个例子:

<?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) 

我想能够使中间字符(如果一个偶字符字,最左边的两个中间字符)以加粗标签,并可以这样做这个词。当我尝试更小的其他单词时遇到问题。我需要为每个字长创建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

相关问题