0

示例我有一个像这样的 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>

在基于imgalt 属性保存到数据库之前。

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

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

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

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

2 回答 2

4

如果要替换它,请使用 preg_replace。考虑到你在 $str 变量中得到了字符串,那么下面将是使用 preg_replace 的方法。

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

于 2013-05-30T11:01:09.363 回答
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
于 2013-05-30T11:12:35.717 回答