2016-10-10 5 views
-1

私はいくつかの.htmファイルを取得し、最終的にその内容を1つのエコーに入れるためにGlob関数を使用するforeachを持っています。PHP - preg_replaceとstr_replaceはforeach内で一度だけ置換されます

私はこのすべての.htmファイルにある特定のフレーズを、それぞれの.htmファイル名から抽出したいくつかのデータに置き換えようとしました。

したがって、

$juzgado_radicadoは--->004

$year_radicadoような数は--->2015

$radicado_radicadoような数は--->00911

ような数を生成する生成生成

数値は、foreachの新しいファイル名を取得する反復に応じて変化しています。

最終的に私はpreg_replaceまたはstr_replaceを使用して各.htmドキュメントのフレーズを変更しますが、各繰り返しで数字を置き換えても、すべての置換えで同じ結果が得られます。だから、すべての.htmファイルに "00911"のようなものがあり、 "00911"や "00577"のようなものでなければなりません。

preg_replacestr_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

私は答えを見つけました:あなたはPHPのDom Documentオブジェクトではなく、foreachループの星で置き換える必要があります。

str_replacepreg_replaceの異なる置換データですべての繰り返しを行うことができないため、Domオブジェクトに置き換えようとすると失敗する可能性があります。

関連する問題