Извлечь блок из базы данных

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

Шардик

Постоялец
Регистрация
21 Ноя 2007
Сообщения
54
Реакции
13
имеем поле вида:
PHP:
[u]Информация о фильме[/u]
[b]Название: [/b] [size=12][color=darkgreen]Любовница[/color][/size] 
[b]Оригинальное название: [/b] [size=24][color=black][family=Monotype Corsiva]Aein[/family][/color][/size]
[b]Год выхода: [/b] [size=18]2005[/size]
[b]Жанр: [/b] [color=darkorange][size=12]Мелодрама, эротика[/size][/color]
[b]Режиссер: [/b] Ким Ын Тхэ / Kim Eun-tae
[b]В ролях: [/b] Сон Хён А,  Чо Дон Хёк
[b]О фильме: [/b]
Может ли одна случайная встреча, которая началась как флирт в лифте и закончится через 24 часа, перерасти в любовь всей жизни? А если эта встреча происходит накануне свадьбы? И с женихом вы уже семь лет вместе? Все началось как игра, но почему тогда ей с ним так легко и уютно, так просто и непринужденно? Неужели она неслучайно встретила его накануне свадьбы? Или это всего лишь игра воображения? Ведь дома ждет проверенный и надежный человек. Ей предстоит нелегкий выбор: уверенность в завтрашнем дне или незнакомец, который вскружил ей голову.
[b]Выпущено: [/b] Южная Корея
[b]Продолжительность: [/b] 01:38:11
[b]Перевод: [/b] Отсутствует
[b]Субтитры: [/b] Русские ([color=red]terra[/color])
[u]Файл[/u]
[b]Формат: [/b] AVI
[b]Качество: [/b] DVDRip, 0.17 bit/pixel
[b]Видео: [/b] Кодек: XviD, Размер кадра: 624x336, Битрейт: 880 кб/с
[b]Аудио: [/b] Корейский (МР3, 102.68 кб/с)
нужно, чтобы на странице отобразился только блок "О фильме":
PHP:
[b]О фильме: [/b]
Может ли одна случайная встреча, которая началась как флирт в лифте и закончится через 24 часа, перерасти в любовь всей жизни? А если эта встреча происходит накануне свадьбы? И с женихом вы уже семь лет вместе? Все началось как игра, но почему тогда ей с ним так легко и уютно, так просто и непринужденно? Неужели она неслучайно встретила его накануне свадьбы? Или это всего лишь игра воображения? Ведь дома ждет проверенный и надежный человек. Ей предстоит нелегкий выбор: уверенность в завтрашнем дне или незнакомец, который вскружил ей голову.

помогите, пожалуйста, решить эту задачку - буду сердечно признателен в решении данного вопроса
 
PHP:
$block=getBlock() // допустим тут получатся приведенный тобой блок

$pos1=strpos($block,'[b]О фильме: [/b]'); //найти позицию [b]О фильме: [/b]
$pos2=strpos($block,"[b]",$pos1+1); //найти позицию следующего [b] после $pos1

$yourstring=substr($block,$pos1,$pos2-$pos1); //
$yourstring - будет то что тебе нужно. Эта строка наверное будет в начале и в конце содержать символы перевода строки, поэтому почистишь уже сам. Проверил, работает. Как видишь без регулярки.
 
спасибо!!! получилось!!! а если вместо "О фильме" находится "Описание", что здесь делать? массив писать?
 
спасибо!!! получилось!!! а если вместо "О фильме" находится "Описание", что здесь делать? массив писать?
Заменяешь "о фильме" на любую обоасть которую захочешь извлечь.
 
Заменяешь "о фильме" на любую обоасть которую захочешь извлечь.
спасибо, но я учитываю возможность одновременного чередования 2-х полей: "О фильме" и "Описание"..
попробовал сделать чтото такое:
$massive=array('О фильме: ','Описание: ');
$pos1=strpos($descr,$massive); //
$pos2=strpos($descr,"",$pos1+1); //найти позицию следующего после $pos1

$gotovo=substr($descr,$pos1,$pos2-$pos1); //

не получается..
 
Если нужна 2-я запись то делаешь так:
PHP:
$block = твой блок из примера.
$massive=array('[b]О фильме: [/b]','[b]Описание:  [/b]');
foreach($massive as $val){
$pos1=strpos($block, $val); //
$pos2=strpos($block, "[b]",$pos1+1); //найти позицию следующего [b] после $pos1
$gotovo=substr($descr,$pos1,$pos2-$pos1); //
делаешь что-то с $gotovo........
}
Просто в цикле сделай для каждой нужной записи аналогичный поиск.
 
а если все же с использованием регулярных выражений, код будет выглядеть приблизительно так:
PHP:
$text = блок 
$text = preg_replace("#\[b\]Описание: \[\/b\]#sU","[b]О фильме: [/b]",$text);
preg_match_all('#(\[b\]О фильме: \[\/b\].*)\[b\]#sU',$text, $arr_match);
$result = $arr_match[1][0]; // для одной (первой) записи
// или перебор всего массива
echo "<pre>";
foreach ( $arr_match[1] as $a )
{
echo $a."<br>";
}
echo "</pre>";
 
Есть проблема по регулярке.
Имеет строка такого плана:
PHP:
$stringte = "('','2009-08-05 16:09','<img src=\'http://example.com/18093.jpg\'><br/><p><strong>Описание:</strong> описание теста.</p>','<img src=\'http://example.com/18093.jpg\'><br/><p><strong><span style=\"font-size: small;\">Название</span></strong></p><strong>Жанр:</strong> Драма<br /><strong>Год выпуска</strong>: 2008<br /><strong>Режиссер:</strong></p><strong>Размер файла</strong>: 1.46 Гб<br /><strong>Качество Видео:</strong> BDRip<br /><strong>Видео: </strong>XviD, 720x384, 24 fps, 1596 kbps<br /><strong>Аудио:</strong> Любительский (Одноголосый), AC3, 384 kb/s (6 ch)<br />','Название','','Полное название','63,71',1,1,1,1,1);";
//Пишу регулярку чтоб выдернуть всё, что находится в ''

preg_match_all("/['(.*)']/", $stringte, $m);
print_r($m);
Но на выходе фигня получается, подскажите, как правильно выдернуть и почему данный шаблон не работает.
пытался ещё вот так, тоже не хочет
PHP:
preg_match_all('#[\'(.*)\']#', $stringte, $m);

----------
Извиняюсь за флуд, но уже допёр всем спасибо решение такое.
PHP:
preg_match_all('#\'(.*?)\',#is', $stringte, $m);
 
Проблема тогоже характера, только теперь необходимо блок
PHP:
<img src=\'http://knstats.com/uploads4/18093.jpg\'>
обрамить тэгами
PHP:
 <div>
    <img src=\'http://knstats.com/uploads4/18093.jpg\'>
</div>
Написал вот такую регулярку
PHP:
$pattern1 = "#'(<img\s+src\s*=\s*.*'>)\s*<br\s*/>#i";
$replacement1 = "<div>\${1}</div>";
echo preg_replace($pattern1, $replacement1, $stringte);
Но обрамление происходит всего текста входящего до завершении 2 img, собственно вопрос, можно ли с помощью регулярки добавить <div> вокруг двух <image>
 
А зачем еще и <br /> искать, если обрамлять его не нужно?

$pattern1 = "#(<img\s+src\s*=[^<>=]*?>)#i";
$replacement1 = "<div>$1</div>";
echo preg_replace($pattern1, $replacement1, $stringte);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху