php正则表达式更改html属性的值

php正则表达式更改html属性的值,php,html,regex,Php,Html,Regex,我有一个iframe的html字符串,其中包括宽度和它的值。我想用php中的正则表达式替换宽度值。例如,我动态地得到一个值 避免在XML/HTML文档中使用RegEx,除非有非常好的理由,否则有性能库可以做到这一点 尝试使用此代码来完成您的工作 <?php $html = '<iframe width="560" height="315" src="" frameborder="0" allowfullscreen></iframe>';

我有一个iframe的html字符串,其中包括宽度和它的值。我想用php中的正则表达式替换宽度值。例如,我动态地得到一个值


避免在XML/HTML文档中使用RegEx,除非有非常好的理由,否则有性能库可以做到这一点

尝试使用此代码来完成您的工作

<?php
    $html       = '<iframe width="560" height="315" src="" frameborder="0" allowfullscreen></iframe>';
    $doc        = new DOMDocument();
    $doc->loadHTML($html);
    $elements   = $doc->getElementsByTagName('iframe');

    foreach($elements as $el) {
        $el->setAttribute('width', '1024');
    }
    print $doc->saveHTML();

听起来是个非常糟糕的主意,但接下来。。。差不多

<?php
header('content-type:text/plain;charset=utf8');
$str=base64_decode('PGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSIiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+');
$ret=preg_replace('/(\<iframe.*?width\=)\"(.*?)\"/','${1}"999"',$str);
var_dump($str,$ret);

还将宽度更改为999,并且更加可靠(例如,如果宽度和=,之间有空格或换行符,则正则表达式将中断,尽管它仍然是合法的html..叹气)

使用PHP更改宽度?你在使用模板吗?(我不是落选者)@Halayemani没问题,伙计。我理解。谢谢你的评论。但是,仍然在试图解决我的问题。你应该找到另一种方法。看这里:据我所知,他不想要这个!DOCTYPE html public~~stuff added,他只需要iframe代码。试试:print$doc->saveHTML($doc->getElementsByTagName('iframe')->item(0));您还可以使用
$doc->loadHTML($html,LIBXML\u html\u NODEFDTD | LIBXML\u html\u NOIMPLIED)为了防止doctype和html,头标签被自动添加。这是一个很棒的解决方案。它直接起作用。不幸的是,我对这项技术知之甚少。谢谢
<?php
header('content-type:text/plain;charset=utf8');
$str=base64_decode('PGlmcmFtZSB3aWR0aD0iNTYwIiBoZWlnaHQ9IjMxNSIgc3JjPSIiIGZyYW1lYm9yZGVyPSIwIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+');
$ret=preg_replace('/(\<iframe.*?width\=)\"(.*?)\"/','${1}"999"',$str);
var_dump($str,$ret);
$domd=@DOMDocument::loadHTML($str);
$domd->getElementsByTagName('iframe')->item(0)->setAttribute('width',999);
echo $domd->saveHTML($domd->getElementsByTagName('iframe')->item(0));