PHP: вставить текст до разделителя - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть несколько журналов чата, которые выглядят так:

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 ]

1 голос
/ 04 сентября 2011

Ответ, опубликованный gview, является самым простым, который он получает, однако и просто в качестве ссылки вы можете использовать регулярное выражение для поиска тега name и заменить его новым html-кодом, используя preg_replace (), следующим образом:

// 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);
}
1 голос
/ 04 сентября 2011

выглядит хорошо, хотя вы можете сохранить временные переменные:

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

Это может быть быстрее, а может и нет, вам придется проверить:

echo '<font color=red>' . substr_replace($line, '</font>', strpos($line, ':') , 0);
0 голосов
/ 04 сентября 2011

также попробуйте RegExp следующим образом:

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

EDIT

если их имена не являются "name" или "name1", просто удалите имя в шаблоне, как это

$complete = preg_replace('/^(.*?):/', "<font color=red>$1</font>:", $line);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...