我有一堆看起来像这样的聊天记录:
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;
答案 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);