2012-02-17 9 views
0

で動作するように思われていません。str_replaceは、配列を内破した後破機能

$in_list = "'".implode("','",$array)."'"; 

$in_list内容は次のとおりです。

'Robert','Emmanuel','José','Alexander' 

今私は別の文字列で単語Joséを交換しようとすると、

str_replace("José","J",$in_list); 

これは新しい値を取得しません0はまだそこにあります。何か不足していますか?あまりにも先行しています。

答えて

1

これは動作するはずです。あなたの配列によって異なります。

$str = array('Robert','Emmanuel','José','Alexander'); 
$str = implode(",", $str); 
print str_replace('José', 'J', $str); 
6

正確に文字列を置き換えようとしますか? この方法で試してみる:

$in_list = str_replace("José","J",$in_list); 

echo $in_list; 

すべて正常に動作するはずです。

関数が値を返すことを忘れないでください。したがって、新しい文字列を返します。

+0

私はこれを正確に行っていますが、アクセント付きの単語は置き換えられませんが、アクセントなしの通常の単語で試してみると機能します。 – Luca

+0

以下を試してください:echo ord( "é");値が233の場合は、私が使用しているのと同じ文字を使用します。たぶんあなたは別のascii値を持っていますか? – oopbase

1

私は何が起こっているのか分からない、それは私のために働くようです。あなたはどのPHPのバージョンを使用していますか?

$in_list = "'".implode("','", array('Robert', 'Emmanuel', 'José', 'Alexander'))."'"; 
$replaced = str_replace("José", "J", $in_list); 

//prints 'Robert','Emmanuel','J','Alexander' 
echo $replaced; 

参照:http://codepad.viper-7.com/24qutm

1

これは私のために働いたが、私はあなたから著しく異なる何かをやっているようにそれは見えないのですか?

$array = array('Robert', 'Emmanuel', 'José', 'Alexander'); 
$in_list = "'".implode("','",$array)."'"; 

echo $in_list.PHP_EOL; 
echo str_replace("José","J",$in_list).PHP_EOL; 

出力:

'Robert','Emmanuel','José','Alexander' 
'Robert','Emmanuel','J','Alexander' 

str_replace$in_list自体に交換を実行しないことに注意してくださいではなく、交換を含む文字列を返します。

希望すると便利です。

1

$in_list = html_entity_decode((str_replace(htmlentities("José"),"J",htmlentities($in_list));

1

はあなたがアクセントのない言葉にしようとしたことがありしてみてください?私は、文字セットの不一致があると言います。たとえば、$ in_listの 'José'はlatin1文字セットであり、PHPソースファイルはUTF8です。

この場合、まずPHPファイルまたは変数を、使用したい文字セットに変換する必要があります。

1

自然な推測:これらの2つの文字列は同じではありません。私は、1つの "José"はあなたのソースコードにハードコードされた文字列であり、もう1つはデータベースやブラウザなどから受け取ったものと考えます。 2つの文字列のエンコーディングが同じでない場合、PHPはそれらを同一であると識別せず、文字を置き換えません。ソースコードファイルが、作業中のデータと同じエンコーディングで保存されていることを確認してください。できれば両方ともUTF-8であることが望ましいです。

関連する問題