php regex为没有类的图像添加类

时间:2016-06-09 08:25:03

标签: php regex image class

我正在寻找一个php正则表达式来检查图像是否没有任何类,然后在该图像的类中添加“img-responsive”。

谢谢。

3 个答案:

答案 0 :(得分:2)

而不是寻求实现正则表达式,而是有效地使用DOM

$doc = new DOMDocument;
$doc->loadHTML($html); // load the HTML data

$imgs = $doc->getElementsByTagName('img');

foreach ($imgs as $img) {
  if (!$img->hasAttribute('class'))
      $img->setAttribute('class', 'img-responsive');
}

答案 1 :(得分:1)

我很想在JQuery中这样做。它提供了几行所需的所有功能。

$(document).ready(function(){
    $('img').not('img[class]').each(function(e){
        $(this).addClass('img-responsive');
    });
});

答案 2 :(得分:0)

如果你有PHP输出,那么HTML解析器就是这样做的。最终,正则表达式总是会失败。如果你不想使用解析器,但是你有HTML代码,你可以尝试用简单的PHP代码来完成它:

function addClassToImagesWithout($html)
// this function does what you want, given well-formed html
{
  // cut into parts where the images are
  $parts = explode('<img',$html);
  foreach ($parts as $key => $part)
  {
    // spilt at the end of tags, the image args are in the first bit
    $bits = explode('>',$part); 
    // does it not contain a class
    if (strpos($bits[0],'class=') !== FALSE)
    {
      // insert the class
      $bits[0] .= " class='img-responsive'";
    } 
    // recombine the bits
    $part[$key] = implode('>',$bits);  
  }
  // recombine the parts and return the html
  return implode('<img',$parts);  
}

此代码未经测试且远非完美,但它表明不需要正则表达式。您将不得不添加一些代码来捕获异常。

我必须强调,这个代码,就像正则表达式一样,最终会失败,例如,你有id='classroom'title='we are a class apart'或类似的东西。为了做得更好,你应该使用解析器:

http://htmlparsing.com/php.html