将selfmade image-dl-attribute替换为正确的图像dl标记

时间:2014-05-15 02:37:44

标签: php regex image

我想替换所有图像(使用自己的特殊属性)

<img width="720" height="321" dl="text-text-text-text" alt="Marl's Palace of Sin" src="/images/sin-ambiente.jpg" title="Innenansichten des Hauses">

进入这个

<dl class="imgLeft">
  <dt>
     <img width="720" height="321" alt="Marl's Palace of Sin" src="/images/sin-ambiente.jpg" title="Innenansichten des Hauses">
 </dt>
  <dd>text-text-text-text</dd>
</dl>

我的php功能

function dlSytler($htmlContent)
{
    $regex = '#<img([^>]*).*dl="([^"/]*/?[^".]*\.[^"]*)"([^>]*).*>#'; 
    $replace = '<dl class="imgLeft"><dt><img$1 $3> </dt> <dd>$2</dd> </dl>';
    $htmlContent = preg_replace($regex, $replace, $htmlContent); 
    return $htmlContent;
}

问题是,替换不适用于每个图像(我不知道为什么)。

我认为我的正则规则并不完美。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

你问问题在哪里,我会试着给你一些指示。

对于初学者来说,[^>]*.*的想法毫无意义。它说的是“特定或不匹配X,或匹配任何东西或什么都不匹配”。在这种情况下,很容易匹配任何东西。

这更简单。

搜索:(<img.*?)(dl=.*?)(alt=[^>]*>)

替换:<dl class="imgLeft"><dt>\1\3</dt><dd>\2</dd></dl>

Demo