2014-10-17 47 views
0

我想那些2的preg_replace合併成一個單一one.For例如更換每data-thumb-bg="style="background-image: url('後,如果有.jpg.jpg);更換。組合兩個的preg_replace成一個

$input = preg_replace('#data-thumb-bg="#s', 'style="background-image: url(', $input); 
$input = preg_replace('#.jpg#s', '.jpg);', $input); //this must be executed only if a match has been found for above 

我該怎麼做?

編輯

我想我已經錯了我的意思

.jpg應更換只有data-thumb-bg=一直replaced.Like首先你更換data-thumb-bg那麼你替換遵循的.jpgdata-thumb-bg

親切的問候

回答

5

我假設你的最終目標是到元素的屬性data-thumb-bg="photo.jpg"改爲style="background-image: url(photo.jpg);"。這可以使用capture groupbackreference(注意:s modifier是不必要的,因爲我們不使用.)來完成:如果您希望只允許.jpg extensions

$input = preg_replace('/data-thumb-bg="([^"]+)"/', 'style="background-image: url(\1);"', $input); 

RegEx Demo


,你可以使用以下表達式:

data-thumb-bg="([^"]+?\.jpg)" 

或者如果您只想允許a handful of image extensions,你可以使用這樣的表達式:

data-thumb-bg="([^"]+?\.(?:jpe?g|png|gif))" 
+1

你明白了......完美.Thx很多 – user2650277 2014-10-17 17:35:08

2

您可以將數組傳遞給preg_replace中的模式和替換參數。

$pattern = array('#data-thumb-bg="#s', '#.jpg#s'); 
$replace = array('style="background-image: url(', '.jpg);'); 
$content = preg_replace($pattern, $replace, $input); 
+1

事實上它也能工作,但請記住,當你使用的模式陣列,目標字符串被解析模式一次(如'str_replace') – 2014-10-17 17:46:50