替换PHP中每一行的第一个单词

时间:2012-09-11 14:06:22

标签: php regex string

我的html视图在屏幕上显示.htgroup文件的内容,例如:

download: user1 user2 user3
movies: test test2 user1 user2 user3

我想在download标记中封装组名(movies<strong>),以便它们在浏览器中显示为粗体。我怎么能在PHP5中这样做?我确信使用像preg_replace()这样的函数有一种优雅的方法可以做到这一点,但我在正则表达式上非常糟糕。

行分隔符为\n

4 个答案:

答案 0 :(得分:8)

在这种情况下,您可以使用str_replace作弊并执行此操作,例如$line = "<strong>".str_replace(":", ":</strong>", $line);,但非混乱且可靠的方法是使用正则表达式。

答案 1 :(得分:2)

您没有详细说明文本的格式,也许这个?

$htgroup = preg_replace('/^.*?:/m', '<strong>\0</strong>', $htgroup);

答案 2 :(得分:0)

假设每一行都以\n分隔,优雅的正则表达式解决方案将是:

$str = "download: user1 user2 user3\n".
"movies: test test2 user1 user2 user3";

$rows = explode( "\n", $str );
foreach( $rows as $r ){
    echo preg_replace('/^([^ ]*):/', '<strong>$1</strong>:', $r);
}

如果你想使用html(-ish)布局,那么你可能想在每一行之后添加一个换行符。但我告诉你演讲部分。

答案 3 :(得分:0)

我认为不需要正则表达式。像这样的东西应该很容易做到这一点

$lines = file('/path/to/.htgroup');

foreach($lines as $line) {
    echo '<strong>' . str_replace(':', ':</strong>', $line) . '<br />';
}

请注意添加换行符以保留浏览器中不同行的输出。