如何在正则表达式中包含异常?

时间:2013-02-21 12:24:45

标签: php regex

我想在:之前的字符串中加粗所有内容并按以下方式执行(PHP):

$string = preg_replace('/(.*):/', '<span class="bold">\\1:</span>', $string);

现在我需要一个例外:如果(之前有:,我不想加粗文字。这可能吗?

(所以基本上Size: 123应该加粗,但We increase this (Max: 30)不应该加粗)

3 个答案:

答案 0 :(得分:2)

当然,只需使用:

$string = preg_replace('/([^(]*):/', '<span class="bold">\\1:</span>', $string);

它将匹配之前的任何字符:except(。

答案 1 :(得分:0)

你要打破......让我们说:一切

<a href="http://example.com"><img src="http://example.com/image.png"/></a>

现在是什么?

我认为,这个Size: 123不是&#34;某个地方&#34;在页面上。因此,当您输出时,请格式化它

list($name, $value) = array_map('trim', explode(':', $attribute));
echo "<span class=\"bold\">$name</span>: $value";

最好将此作为数组放在首位,如array('Size'=>'123')

答案 2 :(得分:0)

@ blue112几乎就在那里,但为了不在字符串Max中执行粗体We increase this (Max: 30),需要确保整个字符串不包含任何左括号。这是通过添加字符串开头标记^

来完成的
$string = preg_replace('/^([^(]*):/', '<span class="bold">\\1:</span>', $string);

在行动here中查看。