2013-03-23 190 views
0

我設法讓這個正則表達式的雙引號內匹配任何東西:添加HTML字符串雙引號內

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

它匹配

至於我,我什麼都不知道有任何把握,但星星的景象讓我夢想着。「 - 文森特梵高

我需要做什麼,使用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,但不能得到它工作如何我需要它。

感謝

+0

將你的正則表達式改爲'(「[^」] ++「)' – lazyhammer 2013-03-23 12:38:44

+0

或者'(?<!\\)」。*?(?<!\\)「'如果你需要逃避支持 – lazyhammer 2013-03-23 12:42:43

回答

0

如何:

$str = preg_replace('/("([^"]|\\")*")/', "<i class='quote'>$1</i>", $str); 
+0

哦我的,像湯普森和裏奇:) – cmc 2013-03-23 12:45:52

0

在這裏你去。

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

我覺得你正在尋找的缺失部分是反向引用,\ 1。它代表你的模式中的第一個paint中的任何東西。如果你有多個paranthesis,\ 2,\ 3等代表那些。