0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 14
1

Вырезать почти определённый шаблон из строки

13.03.2013, 13:12. Показов 1197. Ответов 5
Метки нет (Все метки)

Всем привет! Долго пытаюсь вкурить регулярки, но никак не могу освоить их.

Есть строки такого вида:
PHP
1
2
3
4
5
6
export.contract.0.oos:id
export.contract.0.oos:protocolDate
export.contract.1.oos:id
.......
export.contract.324.oos:price
export.contract.324.oos:products.oos:product.oos:country.oos:countryFullName
и так далее (их очень много в массиве)

в общем, мне нужно вырезать отсюда такую строку:
"export.contract.любоечисло"

На выходе получить такое:
PHP
1
2
3
4
5
oos:id
oos:protocolDate
oos:id
oos:price
oos:products.oos:product.oos:country.oos:countryFullName
Да, не обращайте внимание на то, что строки будут повторятся и на вид того, что идёт после "export.contract.любоечисло"

Если кому-то интересно, то многомерный массив, преобразованный в одномерный.
И oos:id будут обозначать столбцы таблицы в SQL, в данном случае они являются ключами в массиве.

Правда, я ещё не знаю, как динамически создавать таблицу SQL (количество столбцов неизвестно заранее).
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2013, 13:12
Ответы с готовыми решениями:

Вырезать или сохранить в заданном файле все строки, начинающиеся на определенный символ
Разработать командный файл, который бы получал в качестве пара- метра какой-либо символ и в...

Вырезать определенный кусок текста
Здравствуйте! Есть такой текст, имя файла 1.html (вводится в enter source file): <!DOCTYPE html>...

Надо вырезать из html определенный текст
Подскажите при помощи каких регулярных выражений можно сотворить следующее имеем некий html...

Регулярные выражения: вырезать определенный фрагмент текста
Здравствуйте, уважаемые форумчане, подскажите плиз как должна выглядеть регулярка, я новичем в этом...

5
Невнимательный
2197 / 594 / 203
Регистрация: 08.02.2013
Сообщений: 4,464
Записей в блоге: 2
13.03.2013, 15:32 2
так далее (их очень много в массиве)
На выходе получить такое:
всмысле , reg_replace замена в массиве? или в цикле использование preg_match ?
или ещё чего типа array_walk или array_map ?
0
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 14
13.03.2013, 15:37  [ТС] 3
Цикл по значениям массива с функцией, которая позволит осуществить вышесказанное. Наверно это reg_replace.
Цикл по значениям массива я могу сам написать.
0
Невнимательный
2197 / 594 / 203
Регистрация: 08.02.2013
Сообщений: 4,464
Записей в блоге: 2
13.03.2013, 15:56 4
о таком спрашиваете?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<xmp>
<?php
$arr = array('export.contract.0.oos:id',
'export.contract.0.oos:protocolDate',
'export.contract.1.oos:id',
'export.contract.324.oos:price',
'export.contract.324.oos:products.oos:product.oos:.....');
 
$arr2 = preg_replace('#^export\.contract\.\d+\.(.++)#','$1',$arr);
echo '
';
var_export($arr2);
?>
0
0 / 0 / 0
Регистрация: 26.12.2012
Сообщений: 14
13.03.2013, 16:07  [ТС] 5
Да, спасибо, а можно объяснить регулярное выражение? '#^export\.contract\.\d+\.(.++)#'
0
Невнимательный
2197 / 594 / 203
Регистрация: 08.02.2013
Сообщений: 4,464
Записей в блоге: 2
13.03.2013, 16:26 6
'#^export\.contract\.\d+\.(.++)#' - отначала текста (^) проверяет совпадение со строкой (export\.contract\.\d+\.)
и всё остальное захватывает в $1 (.++)
если в строке раньше нет цифр , то эквивалент '#^\D++\d+\.(.++)#'
// насчёт разницы в быстродействии затрудняюсь сказать

между // + и ++ нет разницы , в результатах совпадения этого шаблона
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2013, 16:26
Помогаю со студенческими работами здесь

Библиотека itextsharp: вырезать определенный кусок текста из PDF и поместить на форму
Использую данную библиотеку для работы с PDF файлами! Создавать файлы и объединять получается, а...

Написать программу которая заполняет определенный шаблон
Написать программу которая заполняет определенный шаблон. Договор принятия на работу

Вырезать два первых символа символьной строки и поместить их в конец строки
Помоги те пожалуйста, решите сколько сможете. Задачи на строки. 2. Вырежьте два первых символа...

Обработка строки. Как вырезать из имеющейся строки определенные символы
Имеется строка {текст} Как получить текст без {}?


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru