2016-10-10 53 views
-1

我有一個foreach,它使用Glob函數來獲取一些.htm文件,並最終將該內容放入一個回顯中。PHP - preg_replace和str_replace只在foreach中只替換一次

我試圖用我從每個.htm文件名中提取的一些數據替換位於所有.htm文件中的一個特定短語。

所以,

$juzgado_radicado產生數像--->004

$year_radicado產生數像--->2015

$radicado_radicado產生像--->00911

的數

這個數字正在改變,取決於foreach迭代獲得一個新的文件名。

但最後我使用preg_replacestr_replace爲了在每個.htm文檔中更改一個短語,而是在每次迭代中替換數字,我只在所有替換中得到相同的結果。因此,我在所有的.htm文件中得到類似「00911」的東西,它必須是像「00911」和「00577」這樣的例子。

我不知道爲什麼preg_replacestr_replaceforeach循環內有這種行爲。

$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

我找到了答案:您必須在foreach循環的明星處替換而不是使用Php Dom Document對象。

如果您嘗試更換成Dom對象,則可能會失敗,因爲的preg_replace無法使用不同替換數據進行所有迭代。