Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在特定索引处设置字符串中字符的样式?_Php_String_Highlighting_Dna Sequence - Fatal编程技术网

Php 如何在特定索引处设置字符串中字符的样式?

Php 如何在特定索引处设置字符串中字符的样式?,php,string,highlighting,dna-sequence,Php,String,Highlighting,Dna Sequence,您能给我一些指导,告诉我如何在特定索引处为字符串中的一个字符设置样式吗?这个字符串的索引来自一个数组,在某些情况下数组是空的,所以我只需要在数组不是空的情况下设置字符串中的字符的样式 $indices = array(74, 266); $string = "CAGGACACTCTTTCTAGTGTTGATTCACCTCGAAGAAGGTCTGGCCTATTAAGAGATCAAGTTCAGTTGGTAAAAAGAAGCAACTCTGCTCGTTATGAGATAGTCCCGATTCAAGAT

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

$indices = array(74, 266); 

$string  = "CAGGACACTCTTTCTAGTGTTGATTCACCTCGAAGAAGGTCTGGCCTATTAAGAGATCAAGTTCAGTTGGTAAAAAGAAGCAACTCTGCTCGTTATGAGATAGTCCCGATTCAAGATCAACTATCATTTGAGAAGGGTTTCTTTATTGTAATCCGTGCATGCCAGTTGTTGGCTCAGAAGAATGAAGGCATTGTACTGGTGGGAGTCGCTGGTCCTTCAGGGGCCGGAAAGACCATGTTTACAGAAAAGATCCTGAATGTTATGCCTAGTATTGCAATCATAAACATGGACAACTACAATGATCCCAGTCGTATCATTGATGGAAACTTCGACG";
那么,我如何在索引74和266处添加一个带跨距的环绕字符,以便给它一种不同的样式呢

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


谢谢,这相当简单:您只需在循环中使用几个
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;

谢谢你的帮助。。正是我想要的。不客气;)。事实上,我很喜欢这个问题,有点挑战性。
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;
}