2016-12-08 8 views
1

文字列があります"Hello World!"と私はそれにいくつかの文字を置き換えるなどの結果を受けたい「彼はWを!!! !R!D!」私がにすべて「L」「O」を変更することを意味しています「!」 関数が見つかりましたpreg_replace();文字列内の要素を置換するPHP

function replace($s){ 
    return preg_replace('/i/', '!', "$s"); 
} 

と、それは、1つの文字または記号で動作し、私はに2つのシンボルを変更したいです「!」

+5

なぜhttp://php.net/manual/en/function.str-replace.phpを使用しないのですか? – PeeHaa

+1

'str_replace'で' array'を使うと、両方の文字を置き換えることができます。 – chris85

+0

私はそのマニュアルを使用しましたが、配列でしか動作しません。 –

答えて

1
のようなあなたの関数を変更し

function replace($s) { 
    return preg_replace('/[ol]/', '!', $s); 
} 

正規表現の使用方法の詳細については、正規表現hereを参照してください。

+0

作品です。ありがとうございました!しかし、それはまた、 "**"、 "** to **"!** "を置き換えます。 –

+0

@MichaelShtefanitsa、 "o"と "l"の間のコンマを削除するだけです。 –

1

すでに正規表現を使用しているので、実際にパターンを使用すると、は本当にを探していますか?

preg_replace('/l+/', '!', "Hello"); // "He!o" ,so rewrites multiple occurances 

あなたは正確 2 occurancesたい場合:そのことについて

preg_replace('/l{2}/', '!', "Helllo"); // "He!lo" ,so rewrites exactly two occurances 

または何:

preg_replace('/[lo]/', '!', "Hello"); // "He!!!" ,so rewrites a set of characters 

を、そのようなのためのオンラインツールを使用して少し周りを再生する:https://regex101.com/

1

あなたのようにpreg_replaceを使用するやった:

$s = 'Hello World'; 
echo preg_replace('/[lo]/', '!', $s); 

私はそれを行うための別の方法はarraystr_replaceを使用することだと思う:

$s = 'Hello World'; 
$to_replace = array('o', 'l'); 
echo str_replace($to_replace, '!', $s); 
+0

カンマが '[l、o]'にあるのはなぜですか? – arkascha

+0

それは誤っていた、申し訳ありませんでした。 – Ionut

1

これは、あなたがしようとしているようpreg_replace()のいずれかを使用して達成またはstr_replace()

にすることができます preg_replace()を使用して

は、あなたが|(OR)のメタ文字を利用するために必要

function replace($s){ 
    return preg_replace('/l|o/', '!', "$s"); 
} 

str_replace()とするには、配列内の置換するすべての文字を渡してから、単一の置換文字を単なる文字列として渡します(複数の置換文字を使用する場合は、アレイ)。

str_replace(array("l","o"), "!", $s); 

Live Example

関連する問題