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

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

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

 

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

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

тема: присутствие выражения в таблице
 
 автор: duhon   (26.09.2011 в 18:25)   письмо автору
 
 

есть текст

<span>трали вали</span>
<p>Начало нужное</p>
<p> текст </p>
<table>
   <tr>
     <td>
        <p>Начало ложное</p>
        <p>ненужные текст</p>
     </td>
   </tr>
</table>

хочу разрезать текст на части таким образом что бы вышло две части

<span>трали вали</span>


<p>Начало нужное</p>
<p> текст </p>
<table>
   <tr>
     <td>
        <p>Начало ложное</p>
        <p>ненужные текст</p>
     </td>
   </tr>
</table>

использую такое

preg_split('#(?=(<\p{L}+(?<=\p{Latin})>|\s)(?<!<td>))(?=\1Н(?<=\p{Lu})ачало)#'ui, $str)

использовать негативное ретраспективное утверждение (?<!<td>) перед началом регулярки не выходит, так как между тегами <td>...<p> есть неопределенное количество пробелов. Тоесть реально моя регулярка режит на 3 части, захватывает "ложное начало".

Вопрос, как проверить что вхождение нужного текста не находиться в незакрытом теге <table>

  Ответить  
 
 автор: cheops   (26.09.2011 в 20:11)   письмо автору
 
   для: duhon   (26.09.2011 в 18:25)
 

До фрагмента
<span>трали вали</span>
есть какие-то другие фрагменты с <table>?

  Ответить  
 
 автор: duhon   (27.09.2011 в 10:34)   письмо автору
 
   для: cheops   (26.09.2011 в 20:11)
 

>До фрагмента
>
<span>трали вали</span>
есть какие-то другие фрагменты с <table>?

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

я уже подумал может както вот так

((?=<table>).+(?<!<\/table>))?(?(1)error|(?=<\w+>\s*Начало))

я знаю этот вариант не верный, но мысли пока в сторону найти незакрытый тег <table> который решит проблемы с поиском.
Приведу еще пример разбираемого текста

<span>вот так</span>
<table> 
   <tr> 
     <td> 
        <p>Начало</p> 
        <p>ненужный текст</p> 
     </td> 
   </tr> 
</table>
    <p>пусто</p>
<span>трали вали</span> 
<p>Начало единственного правельного места</p> 
<p> нужный текст</p> 
<table> 
   <tr> 
     <td> 
       <span>тут текст мешающий найти тэг td, может быть бесконечно много</span>
        <p>Начало</p> 
        <p>ненужный текст</p> 
     </td> 
   </tr> 
</table>
<p>тут начало текста ненужного
начало не нужного текста</p>

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

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