Помощь в регулярке.

sayber

Новичок
Помощь в регулярке.

Суть такая: в БД хранится текст с тегами ну и соответственно там имеется к примеру <img align="left" src="bla.gif" ....>
Мне надо разделить текст и картинку в разные переменные.

Как должно получиться в итоге http://urcon.net/2.gif


Пример дампа текста в БД
Этот тест получается на странице с новостями.

Код:
<div>
<a href="/uploads/mypics.jpg" onClick="return hs.expand(this)" >
<img 
height="115"
align="left"  
src="/uploads/thumbs/mypics.jpg" 
style="border: none;" 
alt='альт' 
title='тайтл'  />
</a>
Текст бла-бла бла-бла бла-бла бла-бла бла-бла <br />
</div>
<div>
бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла 
</div>

Я пытался сделать таким способом, но что то глючит.

PHP Код для изменения выше указанного текста

PHP:
 function tag_cuts($tag, &$str) {
     $out=preg_replace('/^(.*) '.$tag.'=[\"\']([^\'\"]*)[\"\'](.*)$/', '\\2', $str);
     return ($out==$str)?'':$out;
}

$rSRC = tag_cuts('src', $row['post']); 
$rALIGN = tag_cuts('align', $row['post']);
$rSTYLE = tag_cuts('style', $row['post']);
$rALT = tag_cuts('alt', $row['post']);
$rHREF = tag_cuts('href', $row['post']);
$rCLICK =  tag_cuts('onClick', $row['post']);
$rTEXTdo = preg_replace('/^(.*)\<a (.*)$/', '\\2', $row['post']);
$rTEXT = preg_replace('/^(.*)\<\/a\>(.*)$/', '\\1', $row['post']);
$rALLtext = $rTEXTdo.$rTEXT;
$rIMG = "<a href=\"{$rHREF}\" onClick=\"{$rCLICK}\">
<img align=\"{$rALIGN}\" src=\"{$rSRC}\" style=\"{$rSTYLE}\" onClick=\"{$rCLICK}\" alt='{$rALT}'  /></a>";


$row['post'] = <<<EEE

<table width="539" border="0" cellpadding="0" cellspacing="0">

  <tr>
    <td height="115" valign="top">{$rIMG}</td>
    <td width="100%" rowspan="2" valign="top"><a href="{$rHREF}">
{$rALLtext}
</a></td>
  </tr>
  <tr>
    <td height="45" valign="top">{$rALT}</td>
  </tr>
</table>

EEE;

Результат должен быть:

Код:
<table width="539" border="0" cellpadding="0" cellspacing="0">

  <tr>
    <td height="115" valign="top">
<a href="/uploads/mypics.jpg" onClick="return hs.expand(this)" >
<img 
height="115" 
align="left"  
 src="/uploads/thumbs/mypics.jpg" 
style="border: none;" 
alt='альт' 
title='тайтл'  />
</a>
</td>
    <td width="100%" rowspan="2" valign="top">
<a href="/uploads/mypics.jpg" onClick="return hs.expand(this)" >Текст бла-бла бла-бла 
бла-бла бла-бла бла-бла <br /> бла-бла бла-бла бла-бла 
бла-бла бла-бла 
бла-бла бла-бла бла-бла бла-бла бла-бла бла-бла </a></td>
  </tr>
  <tr>
    <td height="45" valign="top">альт</td>
  </tr>
</table>

Если есть у кого какие то решения - прошу помочь.
 

Фанат

oncle terrible
Команда форума
Не мог бы ты точнее пояснить, где в твоем вопросе исходный текст, а где - тот, который должен получиться.
А ссылок на картинки давать не надо - здесь форум не по фотошопу.
 

sayber

Новичок
Ок. Изменил первый пост.

-~{}~ 04.02.08 00:04:

***** может ты поможешь?
 

Фанат

oncle terrible
Команда форума
я в своих-то не люблю копаться регулярках.
Не говоря уже о чужих.
какие проблемы-то у тебя?
нафига тебе все эти tag_cuts? Почему нельзя просто найти картинку и заменить текст вокруг неё?
 

sayber

Новичок
Есть редактор типа FCK (Визуальный).

При добавлении новости все вноситься в одно поле textarea. Соответственно в БД будет то же что и вписывали в textarea.
Но надо сделать что бы при просмотре анонсов новостей все выглядело как http://kommersant.ru/
или как я писал выше в первом посте.
 

Фанат

oncle terrible
Команда форума
не понял, какое это се имеет отношение к моей реплике.
Видимо, это ты не мне
 

sayber

Новичок
Автор оригинала: *****
не понял, какое это се имеет отношение к моей реплике.
Видимо, это ты не мне
Не подскажешь как найти картинку ?
У меня с регулярным очень туго.

Все что мне надо, это: в переменную $img засунуть картинку в переменную $text соответственно текст.

-~{}~ 05.02.08 18:45:

Может кто ответит??
 
Сверху