将两个preg_replace组合成一个

use*_*277 0 php regex preg-replace

我想结合这2的preg_replace成一个单一的one.For例如每更换data-thumb-bg="style="background-image: url('之后,如果有.jpg将其替换为.jpg);.

 $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
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点 ?

编辑

我想我错误地表达了自己

.jpg应更换只有 data-thumb-bg=一直replaced.Like首先你更换data-thumb-bg,那么你更换.jpg后面的data-thumb-bg

亲切的问候

Sam*_*Sam 5

我假设你的最终目标是将元素的属性更改data-thumb-bg="photo.jpg"style="background-image: url(photo.jpg);".这可以使用捕获组反向引用来完成(请注意,s修改器是不必要的,因为我们不使用a .):

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

RegEx演示


如果您只想允许.jpg扩展,可以使用以下表达式:

data-thumb-bg="([^"]+?\.jpg)"
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想允许少量图像扩展,则可以使用如下表达式:

data-thumb-bg="([^"]+?\.(?:jpe?g|png|gif))"
Run Code Online (Sandbox Code Playgroud)