0

我已经设法得到这个正则表达式来匹配双引号内的任何内容:

"([^"]|\\")*"

哪个匹配

就我而言,我一无所知,但看到星星让我梦想成真。” - 文森特 - 梵高

我需要做的是,使用 PHP 将 HTML 应用于匹配,所以上面的字符串会变成......

<i class="quote">"For my part I know nothing with any certainty, but the sight of the stars makes me dream."</i> - Vincent Van Gogh

我已经尝试过 preg_replace 但无法让它按我的需要工作。

谢谢

4

3 回答 3

0

怎么样:

 $str = preg_replace('/("([^"]|\\")*")/', "<i class='quote'>$1</i>", $str);
于 2013-03-23T12:40:38.567 回答
0

干得好。

echo preg_replace('#"([^"]++)*"#', '<i class="quote">"\1"</i>', 'foo bar "fuz" "buz"')

我认为您正在寻找的缺失部分是反向引用,\1。它代表模式中第一个括号中的任何内容。如果您有多个括号,\2、\3 等代表这些。

于 2013-03-23T12:45:21.853 回答
0

看看 preg_match,用你的正则表达式返回一个匹配并放置它或使用连接。

http://www.php.net/manual/en/function.preg-match.php

您可以使用 preg_replace 但它似乎对您的意图更加复杂。

于 2013-03-23T12:49:59.650 回答