在保存到数据库之前,将所有img标记替换为特定类?

时间:2013-05-30 10:46:23

标签: php regex

示例我有一个像这样的img标签......

<img alt="INLINE:143246;w=240;h=240" class="wysiwyg-inline-image" src="/sites/default/files/styles/inline_image_temp_240x240/public/2013/05/30/600x600_30.png?itok=7mP9F2QH" />

我希望将其替换为......

<p><!-- INLINE:143220;w=240;h=240 --></p>

在根据img alt属性保存到数据库之前。

注意:图像数量是动态的,因为用户可能会上传不同大小的多个图像。图像大小位于图像alt。

到目前为止,我有这段代码。

preg_match_all("/(<img[^>]+>)/i", $node->body[LANGUAGE_NONE][0]['value'], $matches);

foreach($matches as $match) {
  // Replace all matched elements here.
}

2 个答案:

答案 0 :(得分:3)

如果要替换它,请使用preg_replace。考虑一下你在$ str变量中得到了字符串,然后将使用preg_replace来实现它。

$str = preg_replace('/<img.*?alt="(.+?)".*?>/', '<p><!-- $1 --></p>', $str);

答案 1 :(得分:3)

 $html  = $node->body[LANGUAGE_NONE][0]['value'];  // saving value in a variable to manipulate
 preg_match_all("/(<img[^>]+>)/i", $html , $matches);  // returns all image tags

 foreach($matches as $match) {
    $str = preg_replace('/<img.*alt="(.+?)".*?>/', '<p><!-- $1 --></p>', $html);
     //  get the alt tag text
    $html = str_replace($mathch, $str, $html); replace in the original string
 }
 // save $html in database