PHP-preg_replace和str_replace仅在foreach内部替换一次

PHP-preg_replace和str_replace仅在foreach内部替换一次,replace,preg-replace,str-replace,glob,Replace,Preg Replace,Str Replace,Glob,我有一个foreach,它使用Glob函数来获取一些.htm文件,最后将这些内容放在一个echo中 我试图用从每个.htm文件名中提取的一些数据替换所有这些.htm文件中的一个特定短语 所以 $juzgado_radicado生成一个类似-->004 $year\u radicado生成一个类似-->2015 $radicado\u radicado生成一个类似-->00911 这些数字随着获得新文件名的迭代而变化 但在最后,我使用preg_replace或str_replace来更改每个.ht

我有一个foreach,它使用Glob函数来获取一些.htm文件,最后将这些内容放在一个echo中

我试图用从每个.htm文件名中提取的一些数据替换所有这些.htm文件中的一个特定短语

所以

$juzgado_radicado
生成一个类似-->
004

$year\u radicado
生成一个类似-->
2015

$radicado\u radicado
生成一个类似-->
00911

这些数字随着获得新文件名的迭代而变化

但在最后,我使用
preg_replace
str_replace
来更改每个.htm文档中的一个短语,但不是替换每个迭代中的数字,我只在所有替换中得到相同的结果。所以我在所有的.htm文件中都会得到类似“00911”的东西,它必须是类似“00911”和“00577”的例子

我不知道为什么
preg\u replace
str\u replace
foreach
循环中有这种行为

$directory2=“/Applications/XAMPP/xamppfiles/htdocs/tecnojuridica/finalizado/”;
$array_filename=glob($directory2.*.htm”);
$string='';
foreach($array\u filename作为$filename)
{
$xml\u file=file\u get\u contents($filename,file\u 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对象
$dom=新的DOMDocument('1.0','utf-8');
$dom->xmlStandalone=true;
$dom->loadHTML($xml\u文件);
$content_node=$dom->getElementById(“divrandom”);
$mega=$dom->saveXML($content\u node);
$string2=preg_replace(“/Datos del Proceso/”、“$juzgado_radicado.”、$year_radicado.”、$radicado_radicado.”、$mega);
$string.=$mega.,';
}
回声utf8_解码($string2);

提前感谢。

我找到了答案:您必须用Php
Dom文档
对象替换foreach循环的at-star

如果您试图替换Dom对象,可能会失败,因为
preg\u replace
str\u replace
无法使用不同的替换数据进行所有迭代