1

preg_replace1回だけ交換?文から不要な単語を削除しようとしていますが、この状況で「an」が置き換えられていないのはなぜですか?

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

modifier一部、何を設定すればよいですか?

$items = "This is an apple... ";
echo preg_replace('/ an | is /i',' ',$items);
//This an apple...   

「このりんごは…」と返してください、ありがとう。

4

2 に答える 2

3

かっこで囲み、単語境界 ( \b)で囲みます。

$items = "This is an apple... ";
echo preg_replace('/\b(an|is)\b/i', ' ', $items);
//This     apple

次を使用して、余分なスペースを削除できます。

$items = "This is an apple... ";
echo trim(preg_replace(array('/\b(an|is)\b/i', '/[ ]+/'), ' ', $items));
//                                              ^^^^^^
//This apple

同じコードの別の例:

$items = "An apple, this is";
echo trim(preg_replace(array('/\b(an|is)\b/i', '/[ ]+/'), ' ', $items));
//apple, this
于 2013-04-25T19:10:27.783 に答える
0

最初の置換が発生し、次の一致から末尾のスペースが削除@Mark Bされるため、正規表現は期待される結果を与えていません。[space]is[space][space]an[space]This an apple...

先読みと後読みを使用して、ケースで preg_replace を使用する正しい方法は次のとおりです。

$items = "This is an apple... ";
echo '[' . preg_replace('/ *(?<= )(an|is)(?= ) */i', ' ', $items) . "]\n";
// OUTPUT: [This  apple... ]
于 2013-04-25T19:54:45.393 に答える