PHP:将文本插入到分隔符

时间:2011-09-04 00:51:19

标签: php string insert

我有一堆看起来像这样的聊天记录:

name: some text
name2: more text
name: text
name3: text

我想强调一下这些名字。我写了一些应该这样做的代码,但是,我想知道是否有比这更简洁的方法:

$line= "name: text";
$newtext = explode(":", $line,1);
$newertext = "<font color=red>".$newtext[0]."</font>:";
$complete = $newertext.$newtext[1];
echo $complete;

3 个答案:

答案 0 :(得分:1)

看起来很好,虽然你可以保存临时变量:

$newtext = explode(":", $line,1);
echo "<font color=red>$newtext[0]</font>:$newtext[1]";

这可能更快或者可能没有,你必须测试:

echo '<font color=red>' . substr_replace($line, '</font>', strpos($line, ':') , 0);

答案 1 :(得分:1)

gview发布的答案是最简单的,但是作为参考,您可以使用正则表达式来查找名称标记,并使用preg_replace()将其替换为新的html代码,如下所示:

// Regular expression pattern 
$pattern = '/^[a-z0-9]+:?/';

// Array contaning the lines
$str = array('name: some text : Other text and stuff',
        'name2: more text : : TEsting',
        'name: text testing',
        'name3: text Lorem ipsum');

// Looping through the array
foreach($str as $line)
{
    // \\0 references the first pattern match which is "name:" 
    echo preg_replace($pattern, "<font color=red>\\0</font>:", $line);
}

答案 2 :(得分:0)

也尝试这样的RegExp:

$line = "name: text";
$complete = preg_replace('/^(name.*?):/', "<font color=red>$1</font>:", $line);
echo $complete ;

修改

如果他们的名字不是“name”或“name1”,只需删除模式中的名称,就像这样

$complete = preg_replace('/^(.*?):/', "<font color=red>$1</font>:", $line);