<?php $key_array = array("ア", "o") ; $data_array1 = array( array("name" => "アベラワー 18年 - ABERLOUR 18 years old)"), array("name" => "アバフェルディー 12年 - ABERFELDY 12 years old)"), array("name" => "ブレア・アソール - BLAIR ATHOL") ) ; $data_array2 = array() ; foreach ($data_array1 as $d) { $data_array2[] = preg_replace( "/(".join($key_array, "|").")/i", "<strong>$1</strong>", $d["name"] ) ; }
▽2
●
oil999 ●50ポイント ベストアンサー |
コードがUTF-8であればpreg_replace関数の方が高速で、置換オプションも豊富なので、以下のようにしてみました。
<?php $key_array = array( '0' => 'ア', '1' => 'o' ); $data_array01 = array( '0' => array('name' => 'アベラワー 18年 - ABERLOUR 18 years old'), '1' => array('name' => 'アバフェルディー 12年 - ABERFELDY 12 years old'), '2' => array('name' => 'ブレア・アソール - BLAIR ATHOL') ); $data_array02 = array(); //置換パターン生成 $pat = '/('; foreach ($key_array as $key=>$val) { if ($key != 0) $pat .= '|'; $pat .= $val; } $pat .= ')/ui'; $rep = "<strong>$1</strong>"; //置換実行 foreach ($data_array01 as $key=>$item) { $data_array02[$key]['name'] = preg_replace($pat, $rep, $item['name']); } //結果の出力 print_r($data_array02); ?>