如何使用正则表达式或preg_match_all获取样式标记



我对如何使用正则表达式或preg_match_all不是很熟悉。我想获取所有元素的所有样式属性,然后获取字体大小值并将其替换为新值。

例:

<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);

这就是我现在所做的,计算还没有完成。但这个想法是获取当前元素宽度的等效字体大小。

s/font-size: [0-9]*px;/font-size: 50px;/g

并将 50 更改为所需的值。

在这种情况下,没有必要使用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);

输出:

<span style="font-size: 26px;line-height: 26px;">Coming Soon</span>
<span style="font-size: 26px;line-height: 26px;">Coming Soon</span>
<span style="font-size: 70px;line-height: 70px;">Coming Soon</span>
<span style="font-size: 31px;line-height: 31px;">Coming Soon</span>
<span style="font-size: 114px;line-height: 114px;">Coming Soon</span>

http://php.net/manual/en/function.preg-replace-callback.php

相关内容

  • 没有找到相关文章

最新更新