У меня есть письменный скрипт, который ищет каждый id = в .html-файле.
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
Обновите заменяемую деталь:
$html = preg_match('%<[^>]*(id="'.$search.'"[^>]*>)([^<]*)</[^>]*>%', $html, $match) ? str_replace($match[1] . $match[2], $match[1] . $value,$html) : false;
Это заменит также часть тега, начиная с идентификатора. Таким образом, у вас никогда не будет пустой строки.