array(
'игры',
'скачать игры',
'игры бесплатно',
'игры девочек',
'игры онлайн',
'игры торрент',
'игры мальчиков',
'скачать игры дома'
);
array(
'скачать бесплатно девочек онлайн торрент мальчиков',
'дома',
'',
'',
'',
'',
'',
''
);
words = ['игры',
'скачать игры',
'игры бесплатно',
'игры девочек',
'игры онлайн',
'игры торрент',
'игры мальчиков',
'скачать игры дома']
result = ['' for _ in words]
def is_match(pattern, word):
# На самом деле, я бы не вынес поиск в отдельную функцию:
# if words.find(pattern) != -1, но вы можете написать свою реализацию
# если в php нет подходящего инструмента или вам понадобится
# более сложная функциональность
return word.find(pattern) != -1
def diff(pattern, word):
# Тут также можете написать свою реализацию
# В самом простейшем случае, просто замена на пустую строку.
# Однако возникают проблемы, в таком случае слово "скачать"
# будет добавленно два раза, из второго элемента и последнего,
# исходя из вашего алгоритма.
# гарантированные пробелы, для того чтобы слова не слипались
return ' ' + word.replace(pattern, '').strip() + ' '
for i, pattern in enumerate(words):
for word in words:
if is_match(pattern, word):
result[i] += diff(pattern, word)
<?php
$array = array(
'игры',
'скачать игры',
'игры бесплатно',
'игры девочек',
'игры онлайн',
'игры торрент',
'игры мальчиков',
'скачать игры дома'
);
$val_0 = $array;
for($i = 0; isset($val_0[$i]); $i++){
$val_1 = $val_0[$i];
foreach($val_0 as &$val_2){
if(strpos($val_2, $val_1) !== false && $val_1 != $val_2){
$val_3 = str_replace($val_1, '', $val_2);
$val_4 = explode(' ', $val_3);
foreach($val_4 as &$val_5){
if($val_5 != '' && $val_6[$i] != ''){
$val_6[$i] .= ' '.$val_5;
}else if($val_5 != ''){
$val_6[$i] .= $val_5;
}
}
}
}
}
$result = array_values($val_6);
print_r($result);
//вывод массива для наглядности, что пробелы стоят верно
for($i = 0; isset($result[$i]); $i++){
echo '<br /><br />';
echo 'Часть массива '.$i.':<br />';
echo '|'.$result[$i].'|<br />';
}
?>
<?php
$array = array(
'септик',
'септик танк',
'септик дома',
'септик цена',
'загородного септик',
'септики загородного дома',
'септик топас',
'септик руками',
'септик отзывы',
'септик купить',
'куплю септик',
'откачка септиков',
'установка септика',
'септик дачи',
);
$val_0 = $array;
for($i = 0; isset($val_0[$i]); $i++){
$val_1 = $val_0[$i];
foreach($val_0 as &$val_2){
$val_1_1 = explode(' ', $val_1);
$val_1_3 = '';
for($n = 0; isset($val_1_1[$n]); $n++){
$val_1_2 = $val_1_1[$n];
if(strpos($val_2, $val_1_2) !== false){
$val_1_3[$n] = 1;
}else{
$val_1_3[$n] = 0;
}
}
if(array_search('0', $val_1_3) === false && $val_1 != $val_2){
$val_3 = $val_2;
foreach ($val_1_1 as &$val_1_4){
$val_3 = str_replace($val_1_4, '', $val_3);
}
$val_4 = explode(' ', $val_3);
for($b = 0; isset($val_4[$b]); $b++){
if(strlen(utf8_decode($val_4[$b])) < 3){
unset($val_4[$b]);
}
}
foreach($val_4 as &$val_5){
if(strpos($val_6[$i], $val_5) === false){
if($val_5 != '' && $val_6[$i] != ''){
$val_6[$i] .= ' '.$val_5;
}else if($val_5 != ''){
$val_6[$i] .= $val_5;
}
}
}
}else{
$val_6[$i] .= '';
}
}
}
$result = $val_6;
print_r($result);
//вывод массива для наглядности, что пробелы стоят верно
for($i = 0; array_key_exists($i, $result); $i++){
echo '<br /><br />';
echo 'Часть массива '.$i.':<br />';
echo '|'.$result[$i].'|<br />';
}
?>