我使用 preg_replace 来解码 bbcode 并(.*?)
用来获取属性值。
我想将其替换font-size:\10px; (font-size:(.*?)0px;)
为,例如,如果属性值为 7,则字体大小将为 70。但它认为我想要值 \10。我该怎么做才能将属性值和 0 分开?
是否可以做类似'font-size:'.\1.'0px;'
或类似的事情来将属性值与零分开?
我使用 preg_replace 来解码 bbcode 并(.*?)
用来获取属性值。
我想将其替换font-size:\10px; (font-size:(.*?)0px;)
为,例如,如果属性值为 7,则字体大小将为 70。但它认为我想要值 \10。我该怎么做才能将属性值和 0 分开?
是否可以做类似'font-size:'.\1.'0px;'
或类似的事情来将属性值与零分开?
应用于此文本:
$str = <<< EOD
[size="4"]test1[/size]
[size="4]test2[/size]
[size=4"]test3[/size]
[size=4]test4[/size]
EOD;
$pattern = '@\\[size=("?)(\\d++)\\1\\](.*?)\\[/size\\]@s';
preg_replace:
$replace = '<span style="font-size:${2}0px;">$3</span>';
echo preg_replace($pattern,$replace,$str);
preg_replace_callback:
$replace = function ($matches) {
return sprintf('<span style="font-size:%s0px;">%s</span>',
$matches[2],
$matches[3]
);
};
echo preg_replace_callback($pattern,$replace,$str);
结果:
<span style="font-size:40px;">test1</span>
[size="4]test2[/size]
[size=4"]test3[/size]
<span style="font-size:40px;">test4</span>
Omg... PHP 手册造成了很大的混乱...
关于此代码:
echo preg_replace('/^(1)(2)(3)(4)(5)$/', $r, '12345');
预期输出:
12345!!12345!!
使用heredoc时:
$r = <<< EOD
$0!!\${1}2\${3}4$5!!
EOD;
但是,不使用heredoc:
$r = '$0!!${1}2${3}4$5!!';
是的,不需要反斜杠。