1

您能否就如何在特定索引的字符串中设置一个字符的样式给我一些指导?这个字符串的索引来自一个数组,在某些情况下数组是空的,所以如果数组不为空,我只需要设置字符串中的字符样式

$indices = array(74, 266); 

$string  = "CAGGACACTCTTTCTAGTGTTGATTCACCTCGAAGAAGGTCTGGCCTATTAAGAGATCAAGTTCAGTTGGTAAAAAGAAGCAACTCTGCTCGTTATGAGATAGTCCCGATTCAAGATCAACTATCATTTGAGAAGGGTTTCTTTATTGTAATCCGTGCATGCCAGTTGTTGGCTCAGAAGAATGAAGGCATTGTACTGGTGGGAGTCGCTGGTCCTTCAGGGGCCGGAAAGACCATGTTTACAGAAAAGATCCTGAATGTTATGCCTAGTATTGCAATCATAAACATGGACAACTACAATGATCCCAGTCGTATCATTGATGGAAACTTCGACG";

那么如何在索引 74 和 266 处添加一个环绕字符的跨度,以便我可以给它一个不同的样式?

我的数据来自数据库,所以我需要使其动态化。

谢谢

4

1 回答 1

0

这相当简单:您只需要substr循环中的几个 s 并跟踪字符数。

这是我制作的工作代码:

// zero-based indices
$indices = array(3, 10, 25);

// input
$in = 'abcDefghijKlmnopqrstuvwxyZ';

$openTag = '<b>';
$closeTag = '</b>';

$out = '';
$last = 0;
foreach($indices as $i) {
    $fragment = substr($in, $last, $i-$last);
    $letter = substr($in, $i, 1);
    $last = $i+1;

    $out .= $fragment . $openTag . $letter . $closeTag;
}

$out .= substr($in, $last);

// output
echo $out;

对于这个例子,$outabc<b>D</b>efghij<b>K</b>lmnopqrstuvwxy<b>Z</b>


为方便起见,这里也是一个函数

function highlightChars($text, $indices, $openTag, $closeTag) {
    $out = '';
    $last = 0;
    foreach($indices as $i) {
        $fragment = substr($text, $last, $i-$last);
        $letter = substr($text, $i, 1);
        $last = $i+1;

        $out .= $fragment . $openTag . $letter . $closeTag;
    }

    $out .= substr($text, $last);

    return $out;
}
于 2013-08-15T16:48:00.980 回答