我有一个书面脚本,可以搜索.html文件中的每个 id = 。
PHP:
<?php
$html = file_exists('test.html') ? file_get_contents('test.html') : die('unable to open the file');
$data['test'] = 'WRITE 1';
$data['test2'] = 'WRITE 2';
foreach ($data as $search => $value)
{
$html = preg_match('%<[^>]*id="'.$search.'"[^>]*>([^<]*)</[^>]*>%', $html, $match) ? str_replace($match[1],$value,$html) : false;
}
echo $html;
?>
HTML:
<html>
<head>
<title>TRY</title>
</head>
<body>
<div id="test">A</div>
<div id="test2"></div>
<div id="test3">C</div>
</body>
</html>
问题是它只写在“非空”的标签上,但在空标签上如 id = test2 它会逃脱并且不会写任何值。有没有人可以帮我写“空标签”?
上面的输出是:
WRITE 1
C
它会转移空标签,例如 id =“test2”
但我想要的输出是:
WRITE 1
WRITE 2
C
答案 0 :(得分:1)
将您的替换部件更新为:
$html = preg_match('%<[^>]*(id="'.$search.'"[^>]*>)([^<]*)</[^>]*>%', $html, $match) ? str_replace($match[1] . $match[2], $match[1] . $value,$html) : false;
这也将替换从ID到自身的标记的一部分。所以,你永远不会有一个空字符串。