Php Regex-删除所有与模式不匹配的行

Php Regex-删除所有与模式不匹配的行,php,regex,string,Php,Regex,String,我有以下字符串(带换行符): something 1 什么 有些事 我需要匹配某个2和某个3并替换它,但我有一个结果: <a>something1</a> <a>replacement2</a> <a>replacement3</a> something 1 替代品2 替换3 但我只需要更换,不需要任何东西。有3000个这样的字符串,所以自己删除它会花费很多时间。你有什么想法吗?你可以使用一次完成过滤和替换: $s =

我有以下字符串(带换行符):

something 1
什么
有些事
我需要匹配某个2和某个3并替换它,但我有一个结果:

<a>something1</a>
<a>replacement2</a>
<a>replacement3</a>
something 1
替代品2
替换3
但我只需要更换,不需要任何东西。有3000个这样的字符串,所以自己删除它会花费很多时间。你有什么想法吗?

你可以使用一次完成过滤和替换:

$s = <<< EOF
<a>something1</a>
<a>something2</a>
<a>something3</a>
EOF;

$subject = explode("\n", $s); 
echo implode("\n", preg_filter('~\bsomething([02-9])\b~', 'replacement$1', $subject)); 

$s=你需要在
之间替换还是整行?嘿:)我需要在两者之间替换,现在一切都好了嘿,我喜欢你的答案,不幸的是我没有15分,所以我在评论中写+1:)没问题@jakub:接受答案已经足够了,但你现在有15次了:)是的:)那么+1;)
$s = <<< EOF
<a>something1</a>
<a>something2</a>
<a>something3</a>
EOF;

$subject = explode("\n", $s); 
echo implode("\n", preg_filter('~\bsomething([02-9])\b~', 'replacement$1', $subject)); 
<a>replacement2</a>
<a>replacement3</a>