缩放正则表达式反向引用


Scaling the regex backreference

我需要将字体大小的pt值转换为字体大小的px值。 由于我有一个 96dpi 的屏幕,我需要将 pt 值放大 1.33,以便 px 值在屏幕上的大小与 pt 值相同。 到目前为止,我有

$pattern = "/('d+)pt/";
$replacement = "$1px"; 
$data = preg_replace($pattern, $replacement, $data);  

但这只是将"pt"替换为"px"。替换行需要类似于 $replacement = "(1.33*$1)px";

我该怎么做?

你需要使用preg_replace_callback函数。

$data = "5pt";
$pattern = "~('d+)pt~";
$data = preg_replace_callback($pattern, function($m) {
    return 1.33*$m[1]."px";
}, $data);
echo $data;

输出:

6.65px