我需要替换img标签。 原始标签例如:
<img src="index.php?act=img&sub=article&id=35558" width="150" height="172">
然后我想将其替换为:
<img src="index.php?act=img&sub=article&id=35558" style="width: 150px; height: 172"/>
src中的Id是可以改变的 我不知道如何定义正确的模式,我已经尝试了几个,但没有一个工作。
答案 0 :(得分:2)
请说正则表达式不适合这类事情。在解析简单的事物时应该使用正则表达式,HTML无论如何都不是常规语言。
请阅读this article 关于使用PHP解析HTML
答案 1 :(得分:1)
这应该有效:
$img1 = '<img src="index.php?act=img&sub=article&id=35558" width="150" height="172">';
$img2 = preg_replace('/\<img([^>]+)(width|height)="(\d+)"([^>]*)(width|height)="(\d+)"([^>]*)\>/i', '<img$1 style="$2:$3px;$5:$6px"$4$7>', $img1);
参数的顺序(或任何其他参数)在这里无关紧要。
答案 2 :(得分:0)
我认为你正在寻找一个正则表达式模式,所以你可以使用preg_match重建标签?在这种情况下,这样的事情应该是:
preg_match('/src="(.+?)".+?width="(.+?)".+?height="(.+?)"/i', $str, $matches);
然而,当这些属性开始改变顺序时,这个正则表达式将不再起作用。如果可能的话,最好通过PHP解析HTML。
答案 3 :(得分:0)
这可行的方式:P但不建议使用正则表达式来达到你的目的。
<?php
$string = '<img src="index.php?act=img&sub=article&id=35558" width="150" height="172">';
echo $resultString = preg_replace(array('/\&id\b/i','/width="150" height="172"/i'), array('&id','style="width: 150px; height: 172"'), $string);