0

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

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

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

行分隔符是\n.

4

4 回答 4

8

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

于 2012-09-11T14:09:17.277 回答
2

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

$htgroup = preg_replace('/^.*?:/m', '<strong>\0</strong>', $htgroup);
于 2012-09-11T14:11:04.550 回答
0

假设每一行都由 a 分隔\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) 布局,那么您可能想在每一行之后添加一个换行符。但我把演示部分留给你。

于 2012-09-11T14:16:24.217 回答
0

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

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

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

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

于 2012-09-11T14:21:16.513 回答