Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于复制的PHP比较字符串_Php_Arrays_Replace - Fatal编程技术网

用于复制的PHP比较字符串

用于复制的PHP比较字符串,php,arrays,replace,Php,Arrays,Replace,我有这样一个数组: array{ [39] => src="http://www.google.com/jsapi"> [111] => src="http://www.example.com/wp-content/themes/code.js" [55] => src="http://www.example.com/wp-content/themes/yui.js" [1015] => src="wp-content/uplo

我有这样一个数组:

   array{
    [39] => src="http://www.google.com/jsapi">
    [111] => src="http://www.example.com/wp-content/themes/code.js"
    [55] => src="http://www.example.com/wp-content/themes/yui.js"
    [1015] => src="wp-content/uploads/website.jpg"
   }
Qeustion

找出字符串差异的最佳方法是什么

我的意思是检查是否有重复的

src=”http://www.example.com/wp-content/themes/
重复两次

如果我有这样一个数组:

array{
    [39] => src="http://www.google.com/jsapi">
    [55] => src="http://www.example.com/wp-content/themes/yui.js"
    [1015] => src="wp-content/uploads/website.jpg"
   }
http://www.
重复两次

因此,我们的想法是将字符串与另一个字符串进行比较,找到重复的内容并将其推送到数组中……这就是我所需要的:)


我并不是说这是可能的,但如果可能的话那就太好了:)

下面的链接应该能帮上忙:


您只需更改else输出,将其添加到数组中,并在其中添加while循环。如果您在多个条目上重复,请随意优化代码。我很快就写了这篇文章

function findStrDuplicate($str1, $str2)
{
    $duplicate = '';
    for($i = 0; $i < min(strlen($str1), strlen($str2)); $i++) {
        if($str1[$i] != $str2[$i]) {
            break;
        }
        $duplicate .= $str1[$i];
    }

    return $duplicate;
}

function findArrayPrefixDuplicate($array)
{
    $duplicatesArray = array();

    for($i = 0; $i < count($array) - 1; $i++) {
        for($j = $i+1; $j < count($array); $j++) {
            $dup = findStrDuplicate($array[$i], $array[$j]);
            if(!empty($dup)) {
                $duplicatesArray[] = $dup;
            }
        }
    }

    return array_unique($duplicatesArray);
}

$data = array(
    'src="http://www.google.com/jsapi"',
    'src="http://www.example.com/wp-content/themes/code.js"',
    'src="http://www.example.com/wp-content/themes/yui.js"',
    'src="wp-content/uploads/website.jpg"'
);

// Remove src="..."

$data = array_map(function ($val) {
    return substr($val, 5, strlen($val) - 1);
}, $data);

$result = findArrayPrefixDuplicate($data);

var_dump($result);

我想你可能会想看看后缀树的数据结构。看看这篇文章,了解一些想法:


你能再澄清一下你需要什么吗?你试过正则表达式吗?你可以匹配重复项并选择它们作为组,以后再处理它们…你只是从一开始就匹配吗?所以你想确定唯一的字符串前缀???@mellamokb可能不总是这样,[如果在第二个数组上]谷歌有安全的
https:
那么结果将是
://www.
是一个副本:)那么
js
jsapi
yui.js
中复制的
js
呢?如果我知道
$x
就没有必要像我所说的那样问这个问题,
stru replace()
本可以完成这项工作:)哦,你正在寻找差异,然后使用它来找到被复制者,很抱歉混淆了这比我想要的要多:)所以竖起大拇指:)thnk u
array
  0 => string 'http://www.' (length=11)
  2 => string 'http://www.example.com/wp-content/themes/' (length=41)