/**
* @param array $input
* @param array $items
*
* @return int|null
*/
function compare(array $input, array $items)
{
foreach ($items as $index => $item) {
$compareResult = version_compare(implode('.', $input), implode('.', $item));
if ($compareResult <= 0) {
if ($compareResult === 0 || !array_key_exists($index - 1, $items)) {
return $index;
}
return $index - 1;
}
}
return null;
}
$items = [
[1, 1, 1],
[1, 2, 1],
[1, 2, 2],
[1, 5, 4],
[1, 5, 6],
[2, 1, 6],
[2, 2, 2],
];
$input = [1, 5, 5];
if (null === $index = compare($input, $items)) {
echo 'Элемент не найден';
} else {
echo "Элемент под номером {$index} является наиболее близким";
}
$text = 'Добрый день.Вопрос про сам процесс парсинга страницы, а не ее получение (с помощью curl или любого другого инструмента).
Есть некая страница (HTML-документ) и список ключевых слов. Необходимо получить количество вхождений каждого слова на странице. Мне пришло в голову только генерировать регулярку (что-то вроде (слово1|слово2|слово3)), а потом считать простым перебором количество вхождений.
Какие есть более изящные решения? Реализовывать предполагаю на PHP или nodejs.';
preg_match_all('/слово|документ/ui', $text, $matches, PREG_PATTERN_ORDER);
print_r($matches);
Array
(
[0] => Array
(
[0] => документ
[1] => слово
[2] => слово
[3] => слово
)
)