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/{{([^}]+)}}/<img src="$1" alt="" \/>/g; print $_'
这是在Perl中,但在PHP中应该类似: 从命令行:
echo "{{image.jpg}} {{any-othEr_Fil3.JPG}}" | perl -ne '$_ =~ s/{{([^}]+)}}/<img src="$1" alt="" \/>/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="" />
或
而且{{这不是图像{所以}不要取代我
更多资源