我有一个foreach使用Glob函数来获取一些.htm文件,最后将这些内容放在一个echo中。
我试图将所有这些.htm文件中的一个特定短语替换为我从每个.htm文件名中提取的一些数据。
所以,
$juzgado_radicado
生成一个类似--->的数字004
$year_radicado
生成一个类似--->的数字2015
$radicado_radicado
生成一个类似--->的数字00911
根据获得新文件名的foreach
次迭代,这些数字会发生变化。
但最后我使用preg_replace
或str_replace
来更改每个.htm文档中的一个短语,而是替换每次迭代中的数字,我只在所有替换中得到相同的结果。所以我在所有的.htm文件中都得到类似“00911”的东西,它必须是“00911”和“00577”之类的东西。
我不知道为什么preg_replace
和str_replace
在foreach
循环中有这种行为。
$directory2 = "/Applications/XAMPP/xamppfiles/htdocs/tecnojuridica/finalizado/";
$array_filename = glob($directory2 . "*.htm");
$string = '';
foreach($array_filename as $filename)
{
$xml_file = file_get_contents($filename, FILE_TEXT);
preg_match('/[0-9]{23}/', $filename, $match);
$radicado = $match[0];
// 002
$juzgado_radicado = substr($radicado, -14, 3);
// 2015
$year_radicado = substr($radicado, -11, 4);
// 00958
$radicado_radicado = substr($filename, -7, 5);
// Dom Object
$dom = new DOMDocument('1.0', 'utf-8');
$dom->xmlStandalone = true;
$dom->loadHTML($xml_file);
$content_node = $dom->getElementById("divrandom");
$mega = $dom->saveXML($content_node);
$string2 = preg_replace('/Datos del Proceso/', ' <font size="30"> <span style="background-color: #73A6FF; color: #fff; display: inline-block; padding: 3px 10px; font-weight: bold; border-radius: 5px;">' . $juzgado_radicado . '</span> <span style="background-color: #73A6FF; color: #fff; display: inline-block; padding: 3px 10px; font-weight: bold; border-radius: 5px;">' . $year_radicado . '</span> <span style="background-color: #73A6FF; color: #fff; display: inline-block; padding: 3px 10px; font-weight: bold; border-radius: 5px;">' . $radicado_radicado . ' </span> </font>', $mega);
$string.= $mega . ',';
}
echo utf8_decode($string2);
提前致谢。
答案 0 :(得分:0)
我找到了答案:您必须在foreach循环的星号处替换而不是使用Php Dom Document
对象。
如果您尝试替换为Dom Objects,则可能会失败,因为str_replace
的{{1}}无法使用不同的替换数据进行所有迭代。