我想创建一个比较两个句子并返回使它们不同的单词的方法.
例如
灰色瓷砖100 X 200厨房地板
灰色瓷砖300 X 600厨房地板
差异是100 x 200 300 x 600
它将使一个字(不necesary一个字符到两个独特的词之间坐),但如果距离超过的话,会抛出一个错误,说的短语是不够的类似差别可以在开始/结束/中找到文本
传递到不同的博客后,我发现使用本机php函数xdiff_string_diff我的关注类似的方法,但问题是,我不能使代码工作.我得到错误说xdiff_string_diff是未定义的函数.你们中的任何人都知道应该加载哪些扩展来使这个功能可用?或者,如果你可以建议另一种方法,它将是伟大的,非常感谢.:)
<?php
$old_article = "grey tiles 100 X 200 kitchen flooring";
$new_article = "grey tiles 300 X 600 kitchen flooring"
$diff = xdiff_string_diff($old_article, $new_article, 1);
if (is_string($diff)) {
echo "Differences between two articles:\n";
echo $diff;
}
?>
Run Code Online (Sandbox Code Playgroud)
你必须安装xdiff
pecl install xdiff
Run Code Online (Sandbox Code Playgroud)
或者,您可以尝试使用array_diff查找字符串之间的差异.在空间上爆炸它们然后array_diff它们:
$a1 = explode(" " , 'grey tiles 100 X 200 kitchen flooring');
$a2 = explode(" ", 'grey tiles 300 X 600 kitchen flooring');
echo join(' ', array_diff($a1, $a2)); // 100 200
Run Code Online (Sandbox Code Playgroud)
这不会捕获X,因为X将成为该上下文中字符串的公共部分.
在每个函数(或库)的每个手册页上,它总是提到它是否默认随 PHP 一起提供,以及他们从哪个版本的 PHP 开始将其打包到发行版中。
如果它不在发行版中,那么它会提到它所在的包(PECL 或 PEAR)。
O其手册页指出:
PECL xdiff >= 0.2.0
Run Code Online (Sandbox Code Playgroud)
如果您运行的是 BSD/Solaris/Linux/Mac,您只需打开控制台并输入:
pear install xdiff
Run Code Online (Sandbox Code Playgroud)