1

所以我得到了这个程序,它给了我一堆带有一些内联样式的 html 输出。

它通常看起来像这样:

<DIV style="position:absolute;top:126;left:324"><nobr><span class="ft010"><b>2011</b></span></nobr></DIV>
<DIV style="position:absolute;top:126;left:386"><nobr><span class="ft010"><b>2010</b></span></nobr></DIV>

现在我知道这是一团糟,但这是我得到的,现在改变它不是一个选择。然而,我需要做的是在 top 和 height 属性之后获取一个正则表达式来输入 px 。所以我想要的看起来像这样:

<DIV style="position:absolute;top:126px;left:324px"><nobr><span class="ft010"><b>2011</b></span></nobr></DIV>
<DIV style="position:absolute;top:126px;left:386px"><nobr><span class="ft010"><b>2010</b></span></nobr></DIV>

html 输出为一个长字符串,因此我需要找到所有出现的 top 和 left 并在数值后添加 px 。我一直在尝试许多不同的解决方案,但仍然无法做到正确。如果有人可以帮助我找到适合我的问题的正确正则表达式,那就太好了。我对那些东西很害怕。

4

4 回答 4

3
$html = preg_replace('%(top|left|right|bottom)(:[0-9]{1,4})(;|")%', '$1$2px$3', $html);

这应该搜索任何 CSS 位置关键字,后跟冒号、数字(1-4 位长)和双引号 ( ") 或分号 ( ;)。

然后它将获取所有这三个部分(括号内的部分)并在正确的位置将它们缝合在一起px

http://codepad.viper-7.com/UjYCV3

于 2012-09-05T16:23:47.463 回答
0

你试过这个吗?

$html=str_replace(';left:','px;left:',$html);
$html=str_replace('"><nobr>','px"><nobr>',$html);
于 2012-09-05T16:07:01.567 回答
0

我认为你需要这样的东西:

$html=preg_replace('/(.+)(left|top|bottom|right):([\d]+)(.+)/i','$1$2:$3px;$4',$html);

我没有测试过,但我认为正则表达式写得很好

于 2012-09-05T16:21:13.930 回答
0

比Febi 更合适的答案是:

$html = preg_replace("/(?:left|top|right|bottom|width|height)\s*:\s*\d+/","$0px",$html);
于 2012-09-05T16:24:42.633 回答