Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 26.03.2011, 18:15   #1
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 432
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию Накидайте plz регэксп

Коллеги, имеем файлик который кинули в строку $str, в нем такая структура:

<h4>Name 1</h4>
Text 1
</h4>Name 2</h4>
Text 2
<h4>Name 3</h4>
Text 3

Нужно переложить $str в массивы $name[] и $text[] соответственно, выдайте пожалуйста идею грамотного regexp, с учетом что последний Text 3 не имеет ограничения новым тегом <h4>Name 4</h4>

Заранее спасибо!
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Старый 26.03.2011, 19:12   #2
Эксперт
 
Регистрация: 12.12.2009
Адрес: Ростов-на-Дону
Сообщений: 1,537
Вес репутации: 243
eresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущееeresik - прекрасное будущее
По умолчанию

Если файлик прям именно такой как вы показали - я бы не стал заморачиваться с регэкспами.
$strings=file('ваш файл');
чётный строки - это ваши name (после strip_tags)
нечётные - это text
__________________
Партнёрка знакомств с блоком SAPE. Сапа без расходов на хостинг!
Самый удобный Хостинг (в т.ч. сейчас - бесплатное полугодовое тестирование хостинга Node.JS)
eresik вне форума   Ответить с цитированием
Старый 26.03.2011, 19:44   #3
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 432
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию

Не не такой, я просто структуру показал, пока на ум пришло только такое:
PHP код:
$file file_get_contents "file.html" ); 
 
$arr explode("<h4>",$file); 

// Тут мы будем крутить $arr через foreach
// Получим нечто такое:

$arr[i] = "<h4>".$arr[i];  echo $arr[i];

// Далее ловим <h4>
if (preg_match('|<h4.*?>(.*)</h4>|sei'$arr[i], $t)) 
$t$t[1]; else $t='';

// Получили в массив $name = $t; а в $text = $arr[i] 
В общем набросок мысли. Щас заверну его красиво.

Добавлено через 11 минут
Ну вот, получило не супер пупер производительно, да лучшее на ум не пришло.

PHP код:
<?

$file 
file_get_contents "file.html" );

$arr explode("<h4>",$file);

foreach(
$arr as $str

        {
        
            
$str "<h4>".$str;
        
            
$text[] = $str;
        
            if ( 
preg_match('|<h4.*?>(.*)</h4>|sei'$str$name)) 
        
            
$names[] = $name[1]; 
        
            else 
$names[] = ''
        
        }
        
            if (
count($text) == count($names)) echo "ок"; else "что-то не так"
        
            
var_dump($text);

?>
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!

Последний раз редактировалось Jooz; 26.03.2011 в 19:45. Причина: Добавлено сообщение
Jooz вне форума   Ответить с цитированием
Старый 26.03.2011, 20:12   #4
Пожиратель черепашкоВ
 
Аватар для chahlic
 
Регистрация: 24.12.2008
Адрес: Телемелетрямдия
Сообщений: 4,739
Вес репутации: 395
chahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Jooz Посмотреть сообщение
Ну вот, получило не супер пупер производительно, да лучшее на ум не пришло.
Возможно я не прав, но мне кажется, что тут массив $text будет содержать текст с именами вместе
__________________
Смотри цены в САПе в своей валюте: плагин "Конвертер Валют" для ФФ.
chahlic вне форума   Ответить с цитированием
Старый 26.03.2011, 20:21   #5
Вредина
 
Аватар для Jooz
 
Регистрация: 03.07.2007
Адрес: д.Коноплянка
Сообщений: 3,535
Вес репутации: 432
Jooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущееJooz - прекрасное будущее
По умолчанию

chahlic, да прав, но так и надо. $neme - улетит в титлы, а все остальное в боди. Именно по этому и <h4> который является сплитером, я восстанавливаю.
PHP код:
$str "<h4>".$str
Иначе можно было бы просто $str еще раз долбануть по сптиту </h4> и получить $name = $str2[0]; $text = $str2[1];
__________________
Чтобы произошло чудо нужно обязательно дунуть. Если не дунуть - чуда не произойдет!
Jooz вне форума   Ответить с цитированием
Старый 26.03.2011, 21:31   #6
Хитрый жук
 
Аватар для Алексей Барыкин
 
Регистрация: 05.12.2007
Адрес: Конаково
Сообщений: 2,987
Вес репутации: 389
Алексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущееАлексей Барыкин - прекрасное будущее
По умолчанию

В два прогона
1)
// добавляем разметку для парсинга
$html = preg_replace("|<h(\d+)|Uis", "###<h$1", $html);

2)
// парсим с учетом этой доп. разметки
preg_match_all("|<h(\d+)(.*)>s*(.*)\s*<\/h\d+>(.*)\s*###|Uis", $html, $out, PREG_PATTERN_ORDER);

На выходе получаем массив с уровнями заголовков (\d+), заголовками и собссно текстами.
__________________
taurion.ru | adminbook.ru | indesignbook.ru
Алексей Барыкин вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Люди, накидайте плиз партнерки Jimi Dini Партнерские программы, баннерная реклама 9 21.12.2008 23:52


Часовой пояс GMT +3, время: 14:02.