修改字符串中间字符的更好方法是什么?

时间:2014-02-25 21:58:28

标签: php string replace word

我希望能够在单词字符串的左中间字符周围放置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)

我希望能够使用<b>标记使中间字符(如果是偶数字符,两个中间字符的最左边)加粗,并且可以使用此单词。当我尝试更小的其他单词时,我遇到了问题。我是否必须为每个字长创建if个语句?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

  

我希望能够制作中间字符(如果是   偶数字,左边两个中间字符)粗体   带有标签,可以用这个词来做。我遇到问题的时候   我尝试其他较小的词。我是否必须创建if   每个字长的陈述?或者有更好的方法吗?

根据您的问题,这不应该更合适:

$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