Php GettyImage的正则表达式替换

Php GettyImage的正则表达式替换,php,regex,Php,Regex,我有编辑器以以下格式提供GettyImage中的嵌入代码: <div class="getty embed image" style="background-color:#fff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#a7a7a7;font-size:11px;width:100%;max-width:594px;"> <div style="pad

我有编辑器以以下格式提供GettyImage中的嵌入代码:

<div class="getty embed image" style="background-color:#fff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#a7a7a7;font-size:11px;width:100%;max-width:594px;">
<div style="padding:0;margin:0;text-align:left;"><a href="http://www.gettyimages.com/detail/473144498" target="_blank" style="color:#a7a7a7;text-decoration:none;font-weight:normal !important;border:none;display:inline-block;">Embed from Getty Images</a></div>
<div style="overflow:hidden;position:relative;height:0;padding:65.656566% 0 0 0;width:100%;">
<iframe src="//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true" width="594" height="390" scrolling="no" frameborder="0" style="display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;"></iframe>
</div><p style="margin:0;"></p></div>
<iframe src="//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true" width="594" height="390"></iframe>

我无法使用GettyImage中所有额外的div标记来操作图像大小,并尝试将其替换为以下格式:

<div class="getty embed image" style="background-color:#fff;display:inline-block;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;color:#a7a7a7;font-size:11px;width:100%;max-width:594px;">
<div style="padding:0;margin:0;text-align:left;"><a href="http://www.gettyimages.com/detail/473144498" target="_blank" style="color:#a7a7a7;text-decoration:none;font-weight:normal !important;border:none;display:inline-block;">Embed from Getty Images</a></div>
<div style="overflow:hidden;position:relative;height:0;padding:65.656566% 0 0 0;width:100%;">
<iframe src="//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true" width="594" height="390" scrolling="no" frameborder="0" style="display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;"></iframe>
</div><p style="margin:0;"></p></div>
<iframe src="//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true" width="594" height="390"></iframe>


但我到目前为止运气不好。有人能帮我吗?

也把它们都拿到
#(([a-z]+)=“([^“)+)”+#
通过
perg\u match\u all
我会使用domdocument解析器,而不是正则表达式

<?php
$string = '<div class="getty embed image" style="background-color:#fff;display:inline-block;font-family:\'Helvetica Neue\',Helvetica,Arial,sans-serif;color:#a7a7a7;font-size:11px;width:100%;max-width:594px;">
<div style="padding:0;margin:0;text-align:left;"><a href="http://www.gettyimages.com/detail/473144498" target="_blank" style="color:#a7a7a7;text-decoration:none;font-weight:normal !important;border:none;display:inline-block;">Embed from Getty Images</a></div>
<div style="overflow:hidden;position:relative;height:0;padding:65.656566% 0 0 0;width:100%;">
<iframe src="//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true" width="594" height="390" scrolling="no" frameborder="0" style="display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;margin:0;"></iframe>
</div><p style="margin:0;"></p></div>';
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($string);
libxml_clear_errors();
$doc->getElementsByTagName('iframe')->item(0)->removeAttribute('style');
echo $doc->saveHTML();
然后对变量进行迭代

如果您只需要
高度
宽度
src
属性,那么最好先选择这些属性,然后构建元素。否则,您必须删除用户可以添加的所有属性

因此,修改上述方法:

$iframes = $doc->getElementsByTagName('iframe');
foreach($iframes as $iframe) {
     $src = $iframe->getAttribute('src');
     $height = $iframe->getAttribute('height');
     $width = $iframe->getAttribute('width');
     echo "<iframe src='$src' height='$height' width='$width'></iframe>";
}
$iframes=$doc->getElementsByTagName('iframe');
foreach($iframes作为$iframe){
$src=$iframe->getAttribute('src');
$height=$iframe->getAttribute('height');
$width=$iframe->getAttribute('width');
回声“;
}
这将使:

<iframe src='//embed.gettyimages.com/embed/473144498?et=jFJ38un7Qy1YOLsguPNmmA&viewMoreLink=on&sig=YGqYtdBCwZUYgO864KJJ6ulXuBuS1glNjjOGOHCJ28M=&caption=true' height='390' width='594'></iframe>


您还可以使用
进行属性封装,您只需要转义它们,或者连接变量并使用单引号进行封装。

您尝试过任何正则表达式或解析器吗?我甚至不知道从哪里开始问这个问题;你只是想删除
height
之后的所有属性吗?我只想在iTunes中保留Iframe,不包括css样式。如果使用合适的html解析器,只需选择Iframe并将不需要的属性条带化,谢谢你的回复。。但是我只想得到这个,所以你只想输出iframe?@chris85:no他想删除除src、width和height之外的所有属性。
echo”“不会更改文档。您需要创建一个新的iframe元素来替换旧的元素。@casimirithippolyte我认为OP只需要
iframe
元素。在再次更改答案之前,我将等待我之前对他/她的评论的答复。