php5.2.2の配列でのキーワードマッチ関する質問です。

data_arrayの文章で、key_arrayのキーワードとマッチする文字に<strong>タグをつけたいのです。
その際、field_arrayに対応する要素が対象です。
どのように書けばいいですか?よろしくお願いします。

1)key_arrayはユーザーが入力するワードで、要素数は不確定です。
2)field_arrayの要素数も内容も変化しますが、data_arrayの要素名しか入りません。
3)文字コードはutf-8です。

key_array(
[0] => 流行
[1] => AB
[2] => CD
)

field_array(
[0] => name
[1] => review
)

data_array(
[0] => ( [name] => ABERFELDY 流行 [comment] => ABC [review] => 今日は天気がいい)
[1] => ( [name] => BUNNAHABHAIN [comment] => BCD [review] => ABERFELDY など)
[2] => ( [name] => TAMNAVULIN [comment] => CDE [review] => これが流行ってる)
.....
)
↓↓
data_array(
[0] => ( [name] => <strong>AB</strong>ERFELDY <strong>流行</strong> [comment] => ABC [review] => 今日は天気がいい)
[1] => ( [name] => BUNNAH<strong>AB</strong>HAIN [comment] => ABC [review] => <strong>AB</strong>ERFELDY など)
[2] => ( [name] => TAMNVULIN [comment] => ABC [review] => これが<strong>流行</strong>ってる)
.....
)

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/03/07 08:10:05
  • 終了:2012/03/07 19:00:15

ベストアンサー

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/03/07 09:44:14

ポイント100pt

data_array形式がよくわかりませんがこういうことでしょうか。

<?php
$keys = array('流行','AB','CD');
$fields = array('name','review');

$data = array(
	array('name' => 'ABERFELDY 流行', 'comment' => 'ABC', 'review' => '今日は天気がいい'),
	array('name' => 'BUNNAHABHAIN', 'comment' => 'BCD', 'review' => 'ABERFELDY など'),
	array('name' => 'TAMNAVULIN', 'comment' => 'CDE', 'review' => 'これが流行ってる')
);

function strong($e) {
	global $keys, $fields;
	foreach ($fields as $field) {
		if (isset($e[$field])) {
			foreach ($keys as $key) {
				$e[$field] = preg_replace('/('.$key.')/u', '<strong>$1</strong>', $e[$field]);
			}
		}
	}
	return $e;
}
$data = array_map('strong', $data);


foreach($data as $e) {
	print_r($e); echo '<br>';
}
他2件のコメントを見る
id:Cherenkov

$GLOBALS['keys'] = array('流行','AB','CD');
$GLOBALS['fields'] = array('name','review');

function strong($e) {
$keys = $GLOBALS['keys'];
$fields = $GLOBALS['fields'];
foreach ($fields as $field) {

2012/03/07 18:17:01
id:seadwell

ありがとうございます。
$GLOBALSで対応します。

2012/03/07 18:52:38

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません