PHP preg_replace函数

时间:2014-08-08 09:09:39

标签: php regex

我想用preg_replace对我的字符串进行一些更改。 我正在使用正则表达式,但我的代码不起作用。

例如:

The quick brown fox jumps over the lazy dog

我想更改包含以下内容的字符串的所有部分:

'The quick brown (REGEX - ALL CHARACTERS: fox, dog, cow) jumps over the lazy dog'

''

如何删除这些字符?

3 个答案:

答案 0 :(得分:0)

你可以使用正向前瞻和后瞻性断言去除之间的任何字符" brown"和#34;跳跃"。

$string = "The quick brown fox jumps over the lazy dog";    
echo preg_replace("/(?<=brown).*(?=jumps)/", "", $string);

这将删除任何前面带有&#34; brown&#34;的字符。然后是&#34;跳跃&#34;。 .*表示除换行符之外的任何字符中的0个或更多。

或者,如果您更喜欢使用捕获组:

echo preg_replace("/(brown).*(jumps)/", "$1$2", $string);

这抓住了&#34; brown&#34;和&#34;跳跃&#34;进入群组$1$2,然后在替换字符串中使用它们,省略中间部分。

输出(使用任一方法):

The quick brownjumps over the lazy dog

答案 1 :(得分:0)

您可以使用以下内容:

 $str = "The quick brown (REGEX - ALL CAHRACTE: fox, dog, cow) jumps over the lazy dog";
 preg_replace('/(The quick brown )(.*)( jumps over the lazy dog)/', '$1$3', $str);

检查正则表达式的最佳位置是:http://www.phpliveregex.com/

答案 2 :(得分:0)

你想用这样的空值替换fox吗?

The quick brown  jumps over the lazy dog

然后只需这样做:

<?php
    $string = 'The quick brown fox jumps over the lazy dog';

    $pattern = '/\bfox\b/i';

    $new_string = preg_replace($pattern, null, $string);

    echo $new_string;
?>