使用php preg_replace将alt =“20x20”替换为style =“width:20; height:20;”

时间:2015-03-30 17:07:02

标签: php html preg-replace

我如何使用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);

3 个答案:

答案 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等网站的帮助下找出正则表达式。