使用 preg_replace 创建可选的 alt img 属性
Make optional alt img attribute using preg_replace
我正在使用此代码
echo preg_replace('#\{{2}(.*?)\}{2}#', '<img src="/base/">', $input);
要显示这样的输入:
foo foo {{picture.jpg}} foo
在 img html 标签中。
我想以这种格式添加一个可选的 alt 属性:
{{picture.jpg|optional}}
并翻译成:
<img src="/base/" alt="">
只有存在,不做另一个preg_replace,只改进现有的。
我该怎么做?
因为你只禁止使用另一个 preg_replace 而不是另一个正则表达式,所以这个有效:
preg_replace(['#\{{2}(.*?)\|(.*?)\}{2}#', '#\{{2}(.*?)\}{2}#'], ['<img src="/base/" alt="">', '<img src="/base/">'], $input);
工作示例:
function replacer($input) {
return preg_replace(['#\{{2}(.*?)\|(.*?)\}{2}#', '#\{{2}(.*?)\}{2}#'], ['<img src="/base/" alt="">', '<img src="/base/">'], $input);
}
echo replacer('{{picture.jpg}}');
echo replacer('{{picture.jpg|optional}}');
输出:
<img src="/base/picture.jpg">
<img src="/base/picture.jpg" alt="optional">
你可以使用
{{(.+?)(?:\|([^}]+))?}}
在 PHP
中,在 preg_replace_callback()
的帮助下将是:
<?php
$string = <<<DATA
foo foo {{picture.jpg}} foo
{{picture.jpg|optional}}
DATA;
$regex = '~{{(.+?)(?:\|([^}]+))?}}~';
$string = preg_replace_callback($regex,
function($match) {
if (!empty($match[2])) {
return "<img src='/base/{$match[1]}' alt='{$match[2]}'>";
} else {
return "<img src='/base/{$match[1]}'>";
}
}, $string);
echo $string;
这会产生
foo foo <img src='/base/picture.jpg'> foo
<img src='/base/picture.jpg' alt='optional'>
我正在使用此代码
echo preg_replace('#\{{2}(.*?)\}{2}#', '<img src="/base/">', $input);
要显示这样的输入:
foo foo {{picture.jpg}} foo
在 img html 标签中。 我想以这种格式添加一个可选的 alt 属性:
{{picture.jpg|optional}}
并翻译成:
<img src="/base/" alt="">
只有存在,不做另一个preg_replace,只改进现有的。
我该怎么做?
因为你只禁止使用另一个 preg_replace 而不是另一个正则表达式,所以这个有效:
preg_replace(['#\{{2}(.*?)\|(.*?)\}{2}#', '#\{{2}(.*?)\}{2}#'], ['<img src="/base/" alt="">', '<img src="/base/">'], $input);
工作示例:
function replacer($input) {
return preg_replace(['#\{{2}(.*?)\|(.*?)\}{2}#', '#\{{2}(.*?)\}{2}#'], ['<img src="/base/" alt="">', '<img src="/base/">'], $input);
}
echo replacer('{{picture.jpg}}');
echo replacer('{{picture.jpg|optional}}');
输出:
<img src="/base/picture.jpg">
<img src="/base/picture.jpg" alt="optional">
你可以使用
{{(.+?)(?:\|([^}]+))?}}
在
PHP
中,在 preg_replace_callback()
的帮助下将是:
<?php
$string = <<<DATA
foo foo {{picture.jpg}} foo
{{picture.jpg|optional}}
DATA;
$regex = '~{{(.+?)(?:\|([^}]+))?}}~';
$string = preg_replace_callback($regex,
function($match) {
if (!empty($match[2])) {
return "<img src='/base/{$match[1]}' alt='{$match[2]}'>";
} else {
return "<img src='/base/{$match[1]}'>";
}
}, $string);
echo $string;
这会产生
foo foo <img src='/base/picture.jpg'> foo
<img src='/base/picture.jpg' alt='optional'>