在PHP中除去除一个单词以外的所有内容

在PHP中除去除一个单词以外的所有内容,php,preg-replace,str-replace,Php,Preg Replace,Str Replace,上下搜索,但我找不到任何有用的东西。 除了你,我想脱光所有的衣服 $words = "you,us,them,our"; $keep = "you,"; 这正好相反: $words = str_replace("$keep", "", $words); 除了$keep,我如何剥离所有内容 str_replace(array('us', 'them', 'our', ','), array('','','',''), $words); 当然,这有点糟糕。但是如果你只有一些替代品,这就可以了。

上下搜索,但我找不到任何有用的东西。
除了你,我想脱光所有的衣服

$words = "you,us,them,our";
$keep = "you,";
这正好相反:

$words = str_replace("$keep", "", $words);
除了
$keep
,我如何剥离所有内容

str_replace(array('us', 'them', 'our', ','), array('','','',''), $words);
当然,这有点糟糕。但是如果你只有一些替代品,这就可以了。当你想更换更多的东西时,它会变得丑陋。您可能希望添加一个模式,并使用preg_replace with the not操作符除去除“You”之外的所有内容

像这样:

$text = "You,I,He";
$matches = preg_replace("/[^you]/Uims", "", $text);

print_r($matches);

您要查找的输出不是正好等于$keep吗?旁注:如果是动态的,我会添加一个方法来删除尾随逗号第二个示例有效,只是它保留了逗号。如何读取它们?此输出与简单运行
$words=rtrim($keep,“,”)有何区别?我还有一个问题。它匹配像“你,我,我们的”
这样的词很好,但是当我尝试用逗号分隔的两个长代码时(63bcd4cf4316b070ec6382f54c59626d,3e90e2c665f8003e1d84f505df625),它没有选择正确的代码。它只是显示了他们两个。知道为什么吗?