字符串差异php

lid*_*hon 5 php

我想创建一个比较两个句子并返回使它们不同的单词的方法.

例如

灰色瓷砖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)

Kas*_*lek 7

你必须安装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将成为该上下文中字符串的公共部分.


Mih*_*ncu 2

在每个函数(或库)的每个手册页上,它总是提到它是否默认随 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)