在PHP上的'空标记'中写入值

时间:2013-11-16 09:49:42

标签: php string

我有一个书面脚本,可以搜索.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

1 个答案:

答案 0 :(得分:1)

将您的替换部件更新为:

$html = preg_match('%<[^>]*(id="'.$search.'"[^>]*>)([^<]*)</[^>]*>%', $html, $match) ? str_replace($match[1] . $match[2], $match[1] . $value,$html) : false;

这也将替换从ID到自身的标记的一部分。所以,你永远不会有一个空字符串。