我正在寻找一个php正则表达式来检查图像是否没有任何类,然后在该图像的类中添加“img-responsive”。
谢谢。答案 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'
或类似的东西。为了做得更好,你应该使用解析器: