Подскажите, пожалуйста, как можно проверить совпадение чисел:
691,695,696,697
в данной строке чисел:
691,695,696,697,698,699,692,700,701,702,703,704,693,694,705,685
Хотел проверить с помощью in_array
, но тут не подойдет.
После отработки кода PHP
:
переменная $ids
равняется значению 691,695,696,697
Переменная $ids_class
равняется значению 691,695,696,697,698,699,692,700,701,702,703,704
@Эдуард пытался дать ответ с использованием регулярки, но не вышло.
Вот мой вариант:
<?php
$ids = '691,696,695,697';
$ids_class = '6911,695,696,697,698,699,692,700,701,702,703,704';
if (preg_match_all('%(?<!\d)('. str_replace(',', '|', $ids) .')(?!\d)%', $ids_class, $matches)) {
var_dump($matches[1]);
} else {
echo 'Совпадений не найдено.';
}
Регулярка выглядит так:
%(?<!\d)(691|696|695|697)(?!\d)%
(691|696|695|697)
- группа для поиска совпадений с нужными числами;
(?<!\d)
и (?!\d)
- негативные просмотры назад и вперед для проверки отсутствия цифр перед и после найденного числа (чтобы при поиске 691 не было захвата части числа 6911).
Результат работы:
array(3) {
[0]=>
string(3) "695"
[1]=>
string(3) "696"
[2]=>
string(3) "697"
}
Можно сделать как советует Алексей Шиманский в комментарии
$arr1 = explode(',', '691,695,696,697');
$arr2 = explode(',', '691,695,696,697,698,699,692,700,701,702,703,704');
foreach ($arr1 as $search) {
if (in_array($search, $arr2)) {
echo "founded $search \n";
}
}
или же можно найти пересечение массивов
$arr1 = explode(',', '691,695,696,697');
$arr2 = explode(',', '691,695,696,697,698,699,692,700,701,702,703,704');
var_dump(array_intersect($arr1, $arr2));
Если вы оперируете со строками, то можно воспользоваться регулярными выражениями:
<?php
$ids = '691,695,696,697';
$ids_class = '691,695,696,697,698,699,692,700,701,702,703,704';
echo findNumbers($ids, $ids_class);
function findNumbers($id, $class) {
$pattern = '~(?<=\D|^)(?:'. strtr($id, ',', '|') .')(?=\D|$)~';
if (preg_match_all($pattern, $class, $arr)) {
return 'Найдено совпадение:<hr />'. join(', ', $arr[0]);
} else {
return 'Совпадений не найдено.';
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте! Сайт отказывается принимать любой email, не даёт регистрировать пользователей, как исправить этот момент, с чем может быть связана...
Подскажите пжс как можно заменить кол-во элементов в array_merge на автоматичесую подстановку, тк
Нужно дать право неавторизированным пользователям загружать только картинки на серверИспользую js код
Всем привет, вопрос по yii2Куда можно вынести такие функции в базовом шаблоне yii? Сейчас они лежать в SiteController