我想用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'
到
''
如何删除这些字符?
答案 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;
?>