Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разбить строку

Сообщения:  [1-10]   [11-14] 

 
 автор: vadimka   (15.10.2010 в 10:51)   письмо автору
 
   для: Trianon   (14.10.2010 в 17:48)
 

Да, наверно, нужен preg_match_all, это я зарапортовался, заодно, что-то новое узнал:)

  Ответить  
 
 автор: vadimka   (15.10.2010 в 10:50)   письмо автору
 
   для: heed   (14.10.2010 в 18:09)
 

работает, но надо время, чтобы понять как.

  Ответить  
 
 автор: heed   (14.10.2010 в 18:09)   письмо автору
 
   для: vadimka   (14.10.2010 в 17:31)
 

кстати да :) PREG_SPLIT_NO_EMPTY может всё испортить

PREG_SPLIT_DELIM_CAPTURE имеет смысл только если в () что-то есть
<?php
header
('content-type: text/plain'); 

$text="НАЧАЛО
и какой-то текст. 

ТЕМА
это идет тема. 

СРОКИ ЗАКАЗА
идут условия по срокам. 

НАЗВАНИЕ/СО/СЛЕШЕМ
снова текст. 
"
;

#\A - начало данных (независимо от многострочного режима)
#/m - метасимвол начала строки '^' соответствует ..... '$' ..... перед переводом строки

var_dump(preg_split('#(?:\A|^\r?\n)[А-ЯЁ\/]+\r?\n#m'$text,-11));
?>
--------------------------------------
<?php
var_dump
(preg_split('#(?:\A|^\r?\n)([А-ЯЁ\/]+)\r?\n#m'$text, -11+PREG_SPLIT_DELIM_CAPTURE));
// пробел не добавлял
?>

читайте softtime.ru/bookphp/help.php
// после копирования со страниц удаляйте добавленные форумом пробелы после строк в [CODE]
//// или браузер добавляет
////// \r?\n$ была опечатка после переделывания \r?$ на \r?\n

  Ответить  
 
 автор: Trianon   (14.10.2010 в 17:48)   письмо автору
 
   для: vadimka   (14.10.2010 в 17:31)
 

а зачем Вам preg_split?
чем preg_match_all не угодил?

  Ответить  
 
 автор: vadimka   (14.10.2010 в 17:31)   письмо автору
 
   для: vadimka   (14.10.2010 в 17:23)
 

Я решил всех и себя запутать - упрошаем задачу:
$text="
НАЧАЛО
и какой-то текст.

ТЕМА
это идет тема.

СРОКИ ЗАКАЗА
идут условия по срокам.

НАЗВАНИЕ/СО/СЛЕШЕМ
снова текст.
"
$arr=(preg_split('#(^|[\r\n]+)[А-ЯЁ\s\/]+[\r\n]+.*?#',$text,-1, PREG_SPLIT_NO_EMPTY ));
мне так разбивает но при этом "съедает" слова с буквами в верхнем регистре.
PREG_SPLIT_DELIM_CAPTURE - чето не меняет ситуацию

  Ответить  
 
 автор: vadimka   (14.10.2010 в 17:23)   письмо автору
 
   для: heed   (14.10.2010 в 17:13)
 

спасибо!

  Ответить  
 
 автор: heed   (14.10.2010 в 17:13)   письмо автору
 
   для: vadimka   (14.10.2010 в 16:42)
 

из php-мануала/reference.pcre.pattern.syntax.html

Сопоставление подмаски, содержащий утверждение, происходит обычным образом, за исключением того, что текущая позиция не изменяется. Утверждения касательно последующего текста начинаются с (?= для положительных утверждений и с (?! для отрицающих утверждений. Например, \w+(?=;) совпадает со словом, за которым следует символ ';', но при этом сама точка с запятой в совпадение не включается. А foo(?!bar) соответствует любому появлению "foo", после которого не идёт "bar".

  Ответить  
 
 автор: heed   (14.10.2010 в 17:09)   письмо автору
35.5 Кб
 
   для: Trianon   (14.10.2010 в 16:29)
 

если признаться , не осилил точно представить такой способ :)
, но напомнило один из моих недавних не менее костыльных способов разделения текста :) делал мультиязычные страницы ошибок apache

задумка была в том что предварительно скриптом в файлы записывается первая строка
en<196-86>ru<310-88>cs<428-92>de<553-120>es<709-94> ....
с указанием оффсетов и размеров в файле и по ErrorDocument 400 error.php?400 .... считывать только нужное.
но там ещё более строгая форма записи (для индексирующего скрипта) и слишком много if в обработчике.

  Ответить  
 
 автор: vadimka   (14.10.2010 в 16:42)   письмо автору
 
   для: heed   (14.10.2010 в 16:24)
 

Не могли бы объяснить
?=

  Ответить  
 
 автор: vadimka   (14.10.2010 в 16:33)   письмо автору
 
   для: Trianon   (14.10.2010 в 13:18)
 

не знаю как прицепить "или" прошу как то намекнуть:)

  Ответить  

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования