Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 16.04.2017
Сообщений: 14

Найти совпадения из массива

07.05.2017, 17:23. Показов 1746. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
$arr = array(
'слово1' => '0',
'слово2' => '1',
'no' => '227',
'НеНайдено' => '054',
 );
$string = 'no word ?';
 
$cat = (str_replace(array_keys($arr), $arr, $string));
echo $cat
если слова из массива найдены в $string будет произведена замена. например слово "no" на 227.

В файле такая структура

HTML5
1
2
3
4
5
6
7
8
9
10
<categoryId> </categoryId>
        <description>какой то текст</description>
        <...></...>
        <...></...>
        <...></...>
       <categoryId> </categoryId>
        <description>какой то текст</description>
        <...></...>
        <...></...>
        <...></...>
нужно проверить совпадения слов из массива между тегами <description>, а ответ поставить между <categoryId>. Если ничего не найдено,присвоить значение 054 из массива или ещё как и так во всем файле без учета регистра. Помогите реализовать, пытался, но слишком сложно))



по шаблону найдет теги выставит между "33". может пригодится...

PHP
1
2
3
4
$text = file_get_contents("file.xml");
$idcat="33";
$zcon =  preg_replace('|(<categoryId>).+(</categoryId>)|isU', "$1"." $idcat "."$2",$text);
file_put_contents("file.xml",$zcon);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2017, 17:23
Ответы с готовыми решениями:

Проверка массива на совпадения
у меня есть массив в котором содержаться имена. мне надо убрать имена которые повторяются. сделал проверку на 1-ый элемент и 1+1 элемент....

Найти совпадения
Есть один целый массив, в котором есть подмассивы. Как вытащить все те подмассивы у которых содержимое 4-5 ячеек, будет совпадать. То...

Индексированные поля (совпадения не допускаются) длина совпадения
Столкнулся с проблемой записи в таблицу при индексации поля да (совпадения не допускаются). &quot;На танцевался&quot; здорово. Если...

4
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
10.05.2017, 00:06
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
echo preg_replace_callback('/(<categoryId>.*</categoryId>)[\s]*(<description>.*</description>)/ismU', 'replace_f', $html);
function replace_f($m) {
$arr = array(
'слово1' => '0',
'слово2' => '1',
'no' => '227',
'НеНайдено' => '054',
 );
$string = substr($m[2],14,-15);
$cat = (str_replace(array_keys($arr), $arr, $string));
return '<categoryId>'.$cat.'</categoryId>'.$m[2];
}
?>
1
0 / 0 / 1
Регистрация: 16.04.2017
Сообщений: 14
10.05.2017, 17:17  [ТС]
работает как то криво. заменил делимитеры т.к. на / ругается. код просто копирует текст из <description> в <categoryId> с заменой на цифру из массива и обрезкой, но текст то разной длины))) нужна одна цифра.

меня бы устроил такой код

PHP
1
2
3
4
$Mass1=array("cat1"=>"key1","cat2"=>"key2","cat3"=>"key3");
$str = trim($file[$i]);
$key = array_search($str,$Mass1);
print_r($key);
проблема в том, что работает если в строке 1 слово и только если $str с trim, а если слов больше, то пусто и что делать, если слово не найдено...
0
313 / 312 / 221
Регистрация: 11.07.2015
Сообщений: 1,107
10.05.2017, 19:02
Лучший ответ Сообщение было отмечено Kaiser72 как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
echo preg_replace_callback('/(<categoryId>.*</categoryId>)[\s]*(<description>.*</description>)/ismU', 'replace_f', $html);
function replace_f($m) {
$arr = array(
'слово1' => '0',
'слово2' => '1',
'no' => '227',
'НеНайдено' => '054',
 );
$string = substr($m[2],14,-15);
$cat = '054';
foreach ($arr as $n=>$z) if (strpos($string,$n)!==FALSE) {
$cat = $z;
break;
}
return '<categoryId>'.$cat.'</categoryId>'.$m[2];
}
?>
1
0 / 0 / 1
Регистрация: 16.04.2017
Сообщений: 14
10.05.2017, 20:16  [ТС]
plohoyav
теперь все отлично, сам бы я такое не сделал)) спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.05.2017, 20:16
Помогаю со студенческими работами здесь

Найти совпадения в строке
Как найти сопадение в строке так, чтобы искал как в вернем так и в нижнем регистре. strops не выход поскольку приходится дублировать для...

Найти совпадения в таблице БД
Доброго времени суток. Есть таблица БД в ацессе по названием Врачи. Нужно найти тех врачей которые работают в нескольких отделениях. Сама...

Найти совпадения, заменить
'#\&quot;#i' В тексте присутствуют &quot;, как его через регулярку найти? Слеш для экранирования, но как его экранировать?

Найти совпадения в тексте
Доброго времени суток, ребята. Прошу прощения, если повторюсь и такой вопрос уже звучал. Не хватило сил перелопатить весь форум) Пишу...

Найти все совпадения
Есть строка, в которой помимо прочего есть такое: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru