我想替换所有图像(使用自己的特殊属性)
<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;
}
问题是,替换不适用于每个图像(我不知道为什么)。
我认为我的正则规则并不完美。有人能帮助我吗?
答案 0 :(得分:1)
你问问题在哪里,我会试着给你一些指示。
对于初学者来说,[^>]*.*
的想法毫无意义。它说的是“特定或不匹配X,或匹配任何东西或什么都不匹配”。在这种情况下,很容易匹配任何东西。
这更简单。
搜索:(<img.*?)(dl=.*?)(alt=[^>]*>)
替换:<dl class="imgLeft"><dt>\1\3</dt><dd>\2</dd></dl>