こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字列の置き換えについて

下記のようなテキストファイルを読み込みます。

【お名前】
{@name}

【フリガナ】
{@kana}

【年齢】
{@age}

そしてphpでこのようにしました。

$test = array(
'name' => '名前太郎',
'kana' => 'ナマエタロウ',
);

$file = 'body.txt';
$body = file_get_contents($file);

foreach ($test as $key => $val) {
if ( is_array( $val ) ) {
foreach ( $val as $val2 ) {
$body = preg_replace( "/{@$key}/u", implode(',', $val), $body );
}
} else {
$body = preg_replace( "/{@$key}/u", $val, $body );
}
}

echo $body;

結果は、@nameと@kanaは配列にある通りの文字列に変わりますが@ageは
そのまま表示されてしまいます。

$testの配列で該当するパターンがない場合には@hogeの値を空白にしたいのですが
どうすればいいでしょうか?

foreachを$testで行っているのでループ内ではできないような気がしています。
いい方法があれば教えてください!

投稿日時 - 2012-03-25 11:28:36

QNo.7382683

困ってます

質問者が選んだベストアンサー

ループで置き換えたあとにこういう処理をいれればよいのでは?

$pattern="/{@.+?}/";
$body = preg_replace( $pattern, "", $body );

投稿日時 - 2012-03-25 11:56:32

お礼

シンプルで驚きました・・・
ループ内でゴニョゴニョと考えていたので全く思いつきませんでしたがおかげで解決です!

投稿日時 - 2012-03-25 12:16:22

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問