用于复制的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)