Php 如何使用正则表达式将图像名称替换为img标记?

Php 如何使用正则表达式将图像名称替换为img标记?,php,regex,Php,Regex,假设我需要更换以下任何一项: {{image.jpg}或{{{any-othEr_Fil3.jpg} 致: 或分别使用PHP和regex 计划是什么 我一直在尝试,但没有成功。要匹配的正则表达式(我假设文件名不包含}字符-如果它确实包含,则必须有一个转义方案,从您提供的信息中我不知道): 要替换的字符串: '<img src="$1" alt="" />' “” 要匹配的正则表达式(我假设文件名不包含}字符-如果它确实包含,那么必须有一个转义方案,我从您提供的信息中不知道): 要替

假设我需要更换以下任何一项:

{{image.jpg}
{{{any-othEr_Fil3.jpg}

致:

分别使用PHP和regex

计划是什么

我一直在尝试,但没有成功。

要匹配的正则表达式(我假设文件名不包含
}
字符-如果它确实包含,则必须有一个转义方案,从您提供的信息中我不知道):

要替换的字符串:

'<img src="$1" alt="" />'
“”
要匹配的正则表达式(我假设文件名不包含
}
字符-如果它确实包含,那么必须有一个转义方案,我从您提供的信息中不知道):

要替换的字符串:

'<img src="$1" alt="" />'
“”

这是Perl语言,但在PHP中应该类似:

从命令行:

echo "{{image.jpg}} {{any-othEr_Fil3.JPG}}" | perl -ne '$_ =~ s/{{([^}]+)}}/&lt;img src="$1" alt="" \/&gt;/g; print $_'

这是在Perl中,但在PHP中应该类似:

从命令行:

echo "{{image.jpg}} {{any-othEr_Fil3.JPG}}" | perl -ne '$_ =~ s/{{([^}]+)}}/&lt;img src="$1" alt="" \/&gt;/g; print $_'
快速修复 为了匹配
{
}
之间的字符,我们应该使用
(.+?)
表示匹配任何字符,包括空格。我之所以允许这样做,是因为
文件名.jpg
是一个有效的文件名(如果您不想用
\S+?
替换
+?
)。
+
表示需要有多个字符才能进行匹配。
表示regexp将尝试匹配尽可能少的字符。因此,如果我们使用regexp
{{(.+?)}
,捕获的字符将是那些位于最近的
{{{
}
集合之间的字符。例如:

$string = '{{image.jpg}} or {{any-othEr_Fil3.JPG}}';
echo preg_replace_callback('/{{(.+?)}}/', function($matches) {
    return sprintf('<img src="%s" alt="" />', $matches[1]);
}, $string);
将回响

<img src="image.jpg" alt="" /> or <img src="any-othEr_Fil3.JPG" alt="" /> 
<img src="with_spaces.jpeg" alt="" /> and {{ this_is_not_an_image_so }} don't replace me 
<img src="demonstrating spaces in file names.png" alt="" />
或
而且{{这不是图像{所以}不要取代我
更多资源

快速修复 为了匹配
{
}
之间的字符,我们应该使用
(.+?)
表示匹配任何字符,包括空格。我之所以允许这样做,是因为
文件名.jpg
是一个有效的文件名(如果您不想用
\S+?
替换
+?
)。
+
表示需要有多个字符才能进行匹配。
表示regexp将尝试匹配尽可能少的字符。因此,如果我们使用regexp
{{(.+?)}
,捕获的字符将是那些位于最近的
{{{
}
集合之间的字符。例如:

$string = '{{image.jpg}} or {{any-othEr_Fil3.JPG}}';
echo preg_replace_callback('/{{(.+?)}}/', function($matches) {
    return sprintf('<img src="%s" alt="" />', $matches[1]);
}, $string);
将回响

<img src="image.jpg" alt="" /> or <img src="any-othEr_Fil3.JPG" alt="" /> 
<img src="with_spaces.jpeg" alt="" /> and {{ this_is_not_an_image_so }} don't replace me 
<img src="demonstrating spaces in file names.png" alt="" />
或
而且{{这不是图像{所以}不要取代我
更多资源