我如何使用php preg_replace
来解析HTML字符串并替换
alt="20x20"
的 style="width:20;height:20;"
感谢任何帮助。
我试过了。
$pattern = '/(<img.*) alt="(\d+)x(\d+)"(.*style=")(.*)$/';
$style = '$1$4width:$2px;height:$3px;$5';
$text = preg_replace($pattern, $style, $text);
答案 0 :(得分:1)
您不需要preg_replace来执行此操作。您可以使用str_replace
$html = '<img alt="20x20" />';
preg_match('/<img.*?alt="(.*?)".*>/',$html,$match);
$search = 'alt="' . $match[1] . '"';
list($width, $height) = explode('x', $match[1]);
if(is_numeric($width) && is_numeric($height))
{
$replace = 'style="width:' . $width . 'px;height:' . $height . 'px;"';
echo str_replace($search, $replace, $html);
}
输出:
<img style="width:20px;height:20px;">
答案 1 :(得分:0)
如果你坚持使用正则表达式来改变HTML标记,你肯定会在某个时候被卡住,此时你可以很好地研究像Python这样美丽的汤,或者可能goode olde tidy library,我认为它包含在PHP规范中。但就目前而言:
<?php
$originalString = 'Your string containing <img src="xyz.png" alt="20x20">';
$patternToFind = '/alt="20x20"/i';
$replacementString = 'style="width:20;height:20;"';
preg_replace($patternToFind, $replacementString, $originalString);
?>
由于似乎有很多人对似乎是一个代码请求感到愤怒,你可以查看这个链接以获取php.net的指导。在解释PHP的结构时并不总是这么清楚,但在这种情况下很容易解决你的问题: http://php.net/manual/en/function.preg-replace.php
答案 2 :(得分:-1)
如评论中所述,您应该使用DOM来操作HTML代码。 如果你想通过preg_replace这样做,我建议你自己在this one等网站的帮助下找出正则表达式。