PHP: Как удалить элемент массива по длине?

У меня есть этот массив вывода:

Array
(
[0] => de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después
[1] => de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también
[2] => de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas
[3] => de la Asociación de bibliotecarios americanos, es una
}

Не могли бы вы помочь мне удалить все элементы, содержащие более 100 символов или 10 слов?

Это мой код

К сожалению, код, предоставленный экспертами, не работает, когда я использую переменные:

<?php
function tag_contents($string, $tag_open, $tag_close){
foreach (explode($tag_open, $string) as $key => $value) {
if(strpos($value, $tag_close) !== FALSE){
$result[] = substr($value, 0, strpos($value, $tag_close));;
}
}
return $result;
}

$string = 'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también de la época X de su Esquisse dun tableau historique del progrès de en el lesprit humain, pero no apareció en ninguna de las versiones publicadas de la Asociación de bibliotecarios americanos, en el';
$strpos =  'de la' ;
$tagclose = 'en el';
echo "<pre>";
print_r(tag_contents($string , $strpos , $tagclose));
echo "</pre>";

?>

Эти строки слишком короткие, но я хочу знать, как удалить все элементы с более чем словами «X» или «X»?

-3

Решение

Просто перебирайте массив и проверяйте условия для длины и слов и сбрасывайте элемент массива согласно нему

$arr = Array
(
0 => 'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después',
1 => 'de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también',
2 => 'de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas',
3 => 'de la Asociación de bibliotecarios americanos, es una'
);
foreach($arr as $key=>$value)
{
if(strlen($value)>100 || str_word_count($value) > 10)
{
unset($arr[$key]);
}
}
var_dump($arr);

DEMO

1

Другие решения

$tmp = [
'de la que fue colaborador Sicard, fue realizado ya en 1795 en la Décade philosophique y en el Magasin encyclopedique, y su aparición dos años después',
'de la obligación de tener presentes incesantemente estas combinaciones {44}. Tienen un carácter más estable que las ideas, pero son también',
'de la época X de su Esquisse dun tableau historique del progrès de lesprit humain, pero no apareció en ninguna de las versiones publicadas',
'de la Asociación de bibliotecarios americanos, es una'
];

$tmp = array_filter($tmp, function($currentElement) {
return strlen($currentElement) <= 100 && str_word_count($currentElement) <= 10;
});
1

Попробуйте следующий код:

foreach($yourArray as $key=>$value) {
if(strlen($value)>100 || str_word_count($value)>10) {
unset($yourArray['key']);
}
}

echo '<pre>';
print_r($yourArray);
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector