0

私はテキストの文字列を持っています:

$string = "This is a comment :) :D";

および値を持つキーの配列:

$smileys = Array(':)' => 'smile.gif', ':D' => 'happy.gif');  

文字列内の配列キーの出現を関連する値に置き換えたいので、出力文字列は次のようになります。

$string = "This is a comment smile.gif happy.gif";

これどうやってするの?以下のようにループしてみましたが、うまくいきませんか?

foreach($smileys as $smiley){

    $string = preg_replace("~\b$smileys\b~", $smileys[$smiley], $string);

}

編集

また、配列の間にいくつかの html を追加して、次のように置き換えたいと考えています。

:D

になる

<img src="/happy.gif" />

しかし、同じ html を使用する場合、すべての配列値に同じ html を含める必要がありますstrtrか?

4

3 に答える 3

6

試す

$string= strtr($string,$smileys);

これにより$string、各キーの各発生が$smileys関連する値に置き換えられます。

編集:

タグを文字列に含めるには<img>、文字列全体を単一の

$string=preg_replace('/([\w]+\.gif)/i','<img src="$1">',$string);

もちろん、これは、すべてのgif名に空白が含まれておらずimage.gif、文字列にも影響を受けるため、文字列に他の単語が含まれていないという前提に依存しています...

于 2013-08-28T15:17:36.447 に答える
2

これを試して:

foreach($smileys as $key => $value)
{
  str_replace($key,$value,$string);
}
于 2013-08-28T15:23:57.297 に答える
0

これはすべきです

foreach($smileys as $key=>$value){
    $string = str_replace($smiley[$key], $smiley[$value], $string);
}
于 2013-08-28T15:20:02.857 に答える