[как] Одинаковая последовательность

Статус
В этой теме нельзя размещать новые ответы.

AntonR

Гуру форума
Регистрация
29 Ноя 2007
Сообщения
178
Реакции
75
А как сделать, чтобы разделить последовательность такого типа
\d{5}\s\([А-Я]{3}\)разнообразный текст\d{5}\s\([А-Я]{3}\)разнообразный текст\d{5}\s\([А-Я]{3}\)разнообразный текст

на части
array[0] = \d{5}\s\([А-Я]{3}\)разнообразный текст
array[1] = \d{5}\s\([А-Я]{3}\)разнообразный текст
array[2] = \d{5}\s\([А-Я]{3}\)разнообразный текст
!!
а то невыходит никак :confused: разделить именно на такие части???
 
ну так возьми в скобки нужны части
Код:
(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)
и после preg_match() обращаяся к нужной скобке
PHP:
preg_match('/(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)/', $result, $tmp);
$code = $tmp[0];
$code = $tmp[1];
$code = $tmp[2];
$code = $tmp[3];
 
Не, ну это понятно!
Тут моя вина, просто чучуть не так задал вопрос:
\d{5}\s\([А-Я]{3}\)разнообразный текст\d{5}\s\([А-Я]{3}\)разнообразный текст ................. .................. .................. \d{5}\s\([А-Я]{3}\)разнообразный текст

и надо

array[0] = \d{5}\s\([А-Я]{3}\)разнообразный текст
array[1] = \d{5}\s\([А-Я]{3}\)разнообразный текст
......................................................................
array[N] = \d{5}\s\([А-Я]{3}\)разнообразный текст

P.S. Просто если сделать, вот так
preg_match('\d{5}\s\([А-Я]{3}\)(.*)', ...), то понятное дело оно выдаёт все до конца. А мне необходимо как разделить эти одинаковые последовательности!!
 
и в чем вопрос ?
preg_match('/(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)(\d{5}\s\([А-Я]{3}\)разнообразный текст)/', $result, $tmp);

yf выходе получишь массив

в чем вопрос то ?
 
Так проблема ж в том что "разнообразный текст", подразумевает, что там идёт любой текст с цифрами, буквами и разными символами :).
 
разнообразный текст- во всех случая один и тот же ?
,если да -- почитай про ссылки назад
 
Да, конечно, разный!!
Идёт типа этого:

123456 (АПР)
оаджофыаовыфа
фываодфыоавф
ыавоыжфаовжф
а87787987фыавдоыфаов
выфафыва
564824 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва
.................................................................
454564 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфавыфаодофвыад555555ыавыфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва
654321 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва
-----------------------------------------------------------
ну и надо разбить на части
...
temp[N-1]="454564 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфавыфаодофвыад555555ыавыфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва";
temp[N]="654321 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва".
 
регулярные выражение -- такая вещь , с которой лучше иметь конкретное дело

в том примере что ты привел :
первый блок вырезакется как
PHP:
if (preg_match('/(\d{6}\s\(\w{3}\)\s([\w|\s]+)\d{5}\s\(\w{3}\)\s([\w|\s]+)\s)\d{6}/', $result, $tmp)) {
	$code = $tmp[1];
}
что бы найти второй -- из общего текста удали первый и повтори поиск

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

,ЗЫ или давай образец того что ты будешь обрабатывать
 
Суть дела, что жирная часть точно фиксирована, а всё остальное может быть в произвольной форме, но оно точно там есть!!!
123456 (АПР)
оаджофыаовыфа
фываодфыоавф
ыавоыжфаовжф
а87787987фыавдоыфаов
выфафыва
564824 (АПР)
оаджофыаовыфафываолдоыфвжао
фываодфыдфыоваждоыфвоавф
ыавоыжфаовжф
а87787987фыавдоыфаоввыфаооыжфвадж
выфафыва
 
число строк одинаковое ?

в твоих примерах -- да , пользуйся этим ( если да -- имхо самое простое)


ну или выдерет все 'tktvtyns кроме последнего

PHP:
if (preg_match('/(\d{6} \(АПР\)([\w|\s]*?))\d{6} \(АПР\)/', $result, $tmp)) {
	$code = $tmp[1];
}

вполне рабочий пример я уже дал , или больше инфы о формате данных
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху