所以我得到了这个程序,它给了我一些带有内联样式的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>
现在我知道这是一个烂摊子,但这就是我得到的,改变它现在不是一个选择。我需要做的是在顶部和高度属性之后输入正则表达式输入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输出为一个长字符串,因此我需要查找顶部和左侧的所有出现并在数值后添加px。我一直在尝试很多不同的解决方案,但仍然无法做到正确。如果有人可以帮我找到正确的正则表达式,我会很高兴。我对那些东西太可怕了。
答案 0 :(得分:3)
$html = preg_replace('%(top|left|right|bottom)(:[0-9]{1,4})(;|")%', '$1$2px$3', $html);
这应该搜索任何CSS位置关键字,后跟冒号,数字(1-4位长),以及双引号("
)或分号({{1 }})。
然后将所有这三个部分(括号内的部分)取出并将它们拼接在一起,并在正确的位置加上;
。
答案 1 :(得分:0)
你试过这个吗?
$html=str_replace(';left:','px;left:',$html);
$html=str_replace('"><nobr>','px"><nobr>',$html);
答案 2 :(得分:0)
我认为你需要这样的东西:
$html=preg_replace('/(.+)(left|top|bottom|right):([\d]+)(.+)/i','$1$2:$3px;$4',$html);
我没有测试,但我认为正则表达式写得很好
答案 3 :(得分:0)
比费比更合适的答案是:
$html = preg_replace("/(?:left|top|right|bottom|width|height)\s*:\s*\d+/","$0px",$html);