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

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

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

 

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

вид форума:
Линейный форум Структурный форум

тема: удаление переносов строк
 
 автор: rusty   (15.08.2010 в 09:56)   письмо автору
 
 

доброе время суток.

текст:


текст текст текст текст текст текст

текст текст текст 
текст текст текст текст 
(текст текст 

текст текст текст текст
)

текст (текст 

текст )



как можно с помощью регулярного выражения удалить в тексте все переносы строк, но только вне круглых скобок?

  Ответить  
 
 автор: .....   (16.08.2010 в 03:19)
 
   для: rusty   (15.08.2010 в 09:56)
 

>с помощью регулярного выражения
всмысле с помощью php preg_функций ?
оптимальнее наверное искать типа \([^\(]*\)|[^\(] , т.е то что нужно и то что не нужно , и в callback-функции preg_replace_callback юзать например str_replace() применительно к тому где нужна замена.

или обработать пары подсовпадений типа \G([^\(]*)(\([^\)]*\)?)* как $1,$2
или искать незехватывая ненужное подсовпадение намного некрасивее
// плюс варианты приоритетов идущих подряд открывающих/закрывающих скобок, и экранирование/заковычивание

  Ответить  
 
 автор: rusty   (16.08.2010 в 18:09)   письмо автору
 
   для: .....   (16.08.2010 в 03:19)
 

т.е. за один заход не получится сделать?

  Ответить  
 
 автор: .....   (16.08.2010 в 19:18)
 
   для: rusty   (16.08.2010 в 18:09)
 

>один заход
Всмысле похоже на третий вариант ?
<?php
header
('content-type: text/plain');

$txt='текст
> текст

текст 
текст
<
<<<

<
текст текст
>

>>>
>
текст
<текст  

текст>
.
.
.
'
;
?>

----------    1    ---------
<?
function crlfstrip$arr ) {
    return (isset(
$arr[1])) ?  $arr[0]
    : 
str_replace(array("\r""\n"), ' '$arr[0]);
}

echo 
preg_replace_callback'#\G(<)[^>]++>|[^<]++#''crlfstrip'$txt);
?>

----------    2    ---------
<?

echo preg_replace'#\G([^<]*)(<[^>]*>?)*#e'
        
'str_replace(array("\r", "\n"), " ", \'$1\') . \'$2\''$txt);

?>

----------    3    ---------
<?
echo preg_replace'#[\r\n]++(?=[^>]*(?:<|$))#'' '$txt);
// возможно самый медленый при определённых сочетаниях текста в строках
?>

не оптимизировал шаблоны (лениво), и вариантов есть ещё

  Ответить  
 
 автор: rusty   (17.08.2010 в 12:14)   письмо автору
 
   для: .....   (16.08.2010 в 19:18)
 

спасибо!

  Ответить  
Rambler's Top100
вверх

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