我对如何使用正则表达式或preg_match_all不是很熟悉。 我想获得所有元素的所有样式属性,然后获取font-sizes值并将其替换为新值。
示例:
<span style="font-size: 60px;">Coming Soon</span>
<span style="font-size: 60px;">Coming Soon</span>
<span style="font-size: 160px;">Coming Soon</span>
<span style="font-size: 70px;">Coming Soon</span>
<span style="font-size: 260px;">Coming Soon</span>
获取所有元素的所有字体大小,然后将每个大小替换为新值。
$getnewfont = 7*$getfont/16;
$getnewfont = round($getnewfont);
$getnewfont = 'font-size:' . $getnewfont . 'px;line-height:' . $getnewfont . 'px;';
$getnewfont = preg_replace('/"font-size:(.*)\"/i', $getnewfont, $content);
这就是我现在所做的,计算仍未完成。 但我们的想法是获得当前元素宽度的等效字体大小。
答案 0 :(得分:0)
s/font-size: [0-9]*px;/font-size: 50px;/g
并使用您想要的值更改50.
答案 1 :(得分:0)
在这种情况下,无需使用[
{row: 0, col: 4},
{row: 0, col: 1},
{row: 0, col: 2}
]
功能。
preg_match_all
功能将执行所有必需的替换:
preg_replace_callback
输出:
$html_str = '<span style="font-size: 60px;">Coming Soon</span>
<span style="font-size: 60px;">Coming Soon</span>
<span style="font-size: 160px;">Coming Soon</span>
<span style="font-size: 70px;">Coming Soon</span>
<span style="font-size: 260px;">Coming Soon</span>';
$replaced = preg_replace_callback("/\b(font-size:) (\d{1,3})px;/", function($matches){
$new_size = round(7 * $matches[2]/16);
return $matches[1]." ". $new_size. 'px;line-height: '. $new_size. 'px;';
}, $html_str);
print_r($replaced);