web-dev-qa-db-ja.com

PHP preg_replace / preg_match vs PHP str_replace

誰でも私に違いの簡単な概要を教えてもらえますか?

私の考えでは、彼らは両方とも同じことをしますか?

ありがとう

34
benhowdle89

str_replaceは、特定の文字列を置換します。たとえば、「foo」は「foo」のみに一致して置換します。 preg_replaceは正規表現の照合を行います。たとえば、「/ f。{2} /」は「foo」と照合して置き換えますが、「fey」、「fir」、「fox」、「f12」なども照合します。

[編集]

自分で見て:

$string = "foo fighters";
$str_replace = str_replace('foo','bar',$string);
$preg_replace = preg_replace('/f.{2}/','bar',$string);
echo 'str_replace: ' . $str_replace . ', preg_replace: ' . $preg_replace;

出力は次のとおりです。

str_replace:バーファイター、preg_replace:バーバーター

:)

42
mingos

str_replaceは、固定文字列を別の固定文字列に置き換えるだけで、はるかに高速になります。

正規表現関数を使用すると、 正規表現 と呼ばれるnon-fixedパターンを検索して置き換えることができます。正規表現には多くの「フレーバー」があり、それらはほとんど似ていますが、詳細は異なります。ここで話しているのはPerl互換の正規表現( [〜#〜] pcre [〜#〜] )です。

同じように見える場合は、str_replaceを使用する必要があります。

13
Jon

str_replaceは純粋なテキストの出現を検索し、preg_replaceはパターンを検索します。

5