[英]php regex to change the value html attribute
我有一個 iframe 的 html 字符串,其中包含寬度和它的值。 我想用php中的正則表達式替換寬度的值。 例如,我動態獲取一個值
<iframe width="560" height="315" src="" frameborder="0" allowfullscreen></iframe>
我想通過正則表達式更改寬度的值。 你能幫我一個人嗎。
避免在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();
輸出
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><iframe width="1024" height="315" src="" frameborder="0" allowfullscreen></iframe></body></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);
將寬度更改為 999...但您確實應該使用適當的 HTML 解析器,例如 DOMDocument。
$domd=@DOMDocument::loadHTML($str);
$domd->getElementsByTagName('iframe')->item(0)->setAttribute('width',999);
echo $domd->saveHTML($domd->getElementsByTagName('iframe')->item(0));
還將寬度更改為 999,並且更可靠(例如,如果寬度和 = 之間有空格或換行符,正則表達式將中斷,盡管它仍然是合法的 html .. 嘆氣)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.