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

问题描述 投票:0回答:1

我有一个使用 Glob 函数的 foreach 来获取一些 .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);

提前致谢。

php replace preg-replace glob
1个回答
0
投票

我找到了答案:您必须在 foreach 循环的开始位置替换为 Php

Dom Document
对象。

如果您尝试将替换替换为 Dom 对象,则可能会失败,因为

str_replace
preg_replace
无法使用不同的替换数据进行所有迭代。

© www.soinside.com 2019 - 2024. All rights reserved.