2010-11-14 124 views
3

content.tplPHP的preg_match問題

tratata 'hey' tratata <br/> 
okay 'aaaaa' <br/> 
'trtata' <br/> 
echo 'tratata'hmmmm'traatata'; 
'hello' tratata <br/> 

如何改變只在回聲所有的報價?

我需要

tratata 'hey' tratata <br/> 
okay 'aaaaa' <br/> 
'trtata' <br/> 
echo 'tratata\'hmmmm\'traatata'; 
'hello' tratata <br/> 

謝謝

+0

我沒有絲毫的線索你在問什麼。你能舉一個真實世界的例子嗎? – lonesomeday 2010-11-14 15:02:39

+0

@lonesomeday:我很清楚。 – 2010-11-14 15:05:15

+0

@Vincent很高興聽到它!我明白了基本點,但我不明白這個例子,這非常糟糕 - 這個轉義的目的是什麼? – lonesomeday 2010-11-14 15:07:48

回答

3

這是一個回調很簡單:

$var = preg_replace_callback("`(?<=echo ')(.+)(?=';)`iU", function ($matches) { return addslashes($matches[1]); }, $var) 

首先,我們回聲帶引號的字符串(沒有別的)匹配,那麼我們應用對我們發現的東西的addslashes功能。 ungreedy(U)選項很重要,因此。+不匹配整個字符串。