Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将自制的图像dl属性替换为正确的图像dl标记_Php_Regex_Image - Fatal编程技术网

Php 将自制的图像dl属性替换为正确的图像dl标记

Php 将自制的图像dl属性替换为正确的图像dl标记,php,regex,image,Php,Regex,Image,我想替换所有图像(使用自己的特殊属性) 进入这个 <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</

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


进入这个

<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;
}
函数dlSytler($htmlContent)
{
$regex='#]*.*dl=“([^”/]*/?[^.]*.[^”]*.[^>]*)”([^>]*).>#”;
$replace='$2';
$htmlContent=preg_replace($regex,$replace,$htmlContent);
返回$htmlContent;
}
问题是,替换并不能在每个图像上都起作用(我不知道为什么)


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

如果你问问题出在哪里,我会给你一些建议

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

这更简单

搜索:
(]*>)

替换:
\1\3\2


它对哪些图像有效,对哪些图像无效?
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;
}