PHP:如何获得';不匹配';一串

PHP:如何获得';不匹配';一串,php,Php,我有这个阵列: $GivenString = array("world", "earth", "extraordinary world"); 如何获得如下所示的“不匹配”变量字符串: $string = 'hello, world'; // output = 'hello, ' $string = 'down to earth'; // output = 'down to ' $string = 'earthquake'; // output = '' $string = 'perfect w

我有这个阵列:

$GivenString = array("world", "earth", "extraordinary world");
如何获得如下所示的“不匹配”变量字符串:

$string = 'hello, world'; // output = 'hello, '
$string = 'down to earth'; // output = 'down to '
$string = 'earthquake'; // output = ''
$string = 'perfect world'; // output = 'perfect '
$string = 'I love this extraordinary world'; // output = 'I love this '
谢谢

阵列差异


我认为简单的
str\u replace
会对你有所帮助

$GivenString = array("world", "earth", "extraordinary");

echo str_replace($GivenString, "", $string);

str_replace
不会有帮助,因为有
$string='sevent';//输出=''
在示例中。下面是一段代码,它将完成您的工作

$GivenString = array("world", "earth", "extraordinary world");

foreach ($GivenString as &$string) {
    $string = sprintf('%s%s%s', '[^\s]*', preg_quote($string, '/'), '[^\s]*(\s|)');
}

// case sensitive
$regexp = '/(' . implode('|', $GivenString) . ')/';

// case insensitive
// $regexp = '/(' . implode('|', $GivenString) . ')/i';


$string = 'earthquake';
echo preg_replace($regexp, '', $string);

您可以用空字符串替换数组中出现的每个单词。您尝试了什么?什么不起作用?你做了什么研究来解决这个问题?您是否查看了和函数列表中可能有用的内容?是否
不匹配('abc',数组('abb','bc'))
'a'
'c'
?关于
数组('ab','abc')
?对于最后一个示例不起作用(即跨多个单词)。第三个示例如何<代码>$string=‘地震’;//output=''?兄弟,这个数组不只是用于数组到数组的比较吗?在我的例子中,是字符串到数组。工程师混淆了顺序-已修复@RobertHanson爆炸就是为了这个
$GivenString = array("world", "earth", "extraordinary world");

foreach ($GivenString as &$string) {
    $string = sprintf('%s%s%s', '[^\s]*', preg_quote($string, '/'), '[^\s]*(\s|)');
}

// case sensitive
$regexp = '/(' . implode('|', $GivenString) . ')/';

// case insensitive
// $regexp = '/(' . implode('|', $GivenString) . ')/i';


$string = 'earthquake';
echo preg_replace($regexp, '', $string);