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

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

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

 

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

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

тема: регулярные выражения - преобразовать тэг [img=] в <img>
 
 автор: Hades   (07.08.2007 в 17:51)   письмо автору
 
 

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

[img=left]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]
или
[img=center]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]
или
[img=right]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]

в

<img src=http://site.ru/e107_images/newsp ost_images/image-team-011.jpg align=left>
соответственно
<img src=http://site.ru/e107_images/newsp ost_images/image-team-011.jpg align=center>
соответственно
<img src=http://site.ru/e107_images/newsp ost_images/image-team-011.jpg align=right>

За ранее огромное спасибо )))))

   
 
 автор: himic   (07.08.2007 в 18:24)   письмо автору
 
   для: Hades   (07.08.2007 в 17:51)
 

Чтоб не возникало больше вопросов, держи функцию
<?
function zamena($post){

    
$post preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#i","<a href=\"$1\">$2</a>",$post);
    
$post preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s](.*)\](.*?)\[/url\]#isU",'<a href="\\1" \\2>\\3</a>',$post);
    
$post preg_replace"#\[zag\](.+?)\[/zag\]#is""<span class=\"grayDk\">\\1</span>"$post );
    
$post preg_replace"#\[email\](\S+?)\[/email\]#i""<a href='mailto:\\1' class=\"style1\">\\1</a>"$post );
    
$post preg_replace"#\[email\s*=\s*\&quot\;([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\s*\&quot\;\s*\](.*?)\[\/email\]#i""<a href='mailto:\\1' class=style1>\\2</a>"$post );
    
$post preg_replace"#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#i""<a href='mailto:\\1' class=style1>\\2</a>"$post );
    
$post preg_replace("#\[quote\]\s*(.*?)\s*\[/quote\]#is","<i style=\"color:#6633cc\">$1</i>",$post);
    
$post preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="$2" style="border: 2px solid" $1>',$post);
    
$post preg_replace"#\[b(.*?)\](.+?)\[/b\]#is""<b $1>\\2</b>"$post );
    
$post preg_replace"#\[i\](.+?)\[/i\]#is""<i>\\1</i>"$post );
    
$post preg_replace"#\[u\](.+?)\[/u\]#is""<u>\\1</u>"$post );
    
$post preg_replace"#\[li\](.+?)\[/li\]#is""<li>\\1</li>"$post );
    
$post preg_replace"#\[box(.*?)\](.+?)\[/box\]#is""<table width=\"100%\" class=\"style1\" cellpadding=\"0\" cellspacing=\"0\" \\1><tr><td>\\2</td></tr></table>"$post );
    
$post preg_replace("#\[table(.*?)\](.*?)\[\/table\]#is","<table$1 border=\"0\" cellpadding=\"4\" cellspacing=\"1\" bgcolor=\"#ffffff\" class=\"style1\"><tbody>$2</tbody></table>",$post);
    
$post preg_replace"#\[tr(.*?)\](.+?)\[/tr\]#is""<tr$1>$2</tr>"$post );
    
$post preg_replace"#\[td(.*?)\](.+?)\[/td\]#is""<td bgcolor=#8a8a8a $1>$2</td>"$post );
    
$post preg_replace"#\[div(.*?)\](.+?)\[/div\]#is""<div $1>$2</div>"$post );
    
$post preg_replace("#\[a\s*=\s*(\S+?)\s*\](.*?)\[\/a\]#i","<a name=$1>$2</a>",$post);
    
$post preg_replace("(\&nbsp;)"," ",$post);

    return 
$post;
}
?>

   
 
 автор: Hades   (07.08.2007 в 18:53)   письмо автору
 
   для: himic   (07.08.2007 в 18:24)
 

хмммм... почему-то не срабатывает (((( вот подставляю вот это выражение :

$post = preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="$2" style="border: 2px solid" $1>',$post);

и ни какой замены не происходит ((

   
 
 автор: sim5   (07.08.2007 в 18:57)   письмо автору
 
   для: Hades   (07.08.2007 в 18:53)
 

-

   
 
 автор: Hades   (07.08.2007 в 19:59)   письмо автору
 
   для: sim5   (07.08.2007 в 18:57)
 

хм......!?

   
 
 автор: himic   (07.08.2007 в 20:27)   письмо автору
 
   для: Hades   (07.08.2007 в 19:59)
 

напиши куда ты подставляешь

   
 
 автор: Hades   (07.08.2007 в 20:58)   письмо автору
 
   для: himic   (07.08.2007 в 20:27)
 


function post($postbody)
{
    $postbody = preg_replace('/\[email=([^\]]+)\](.*?)\[\/email\]/ism','<a class="guesthrefemail" href="mailto:\1">\2</a>',$postbody);

    $postbody = preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="\\2" style="border: 2px solid" \\1>',$postbody);

    $patern="#\[[\s]*url[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/url[\s]*\]#i";
    $replacment = '<a class="guesthrefurl" href=\\1>\\2</a>';
    $postbody = preg_replace($patern, $replacment, $postbody);
    // Тэги
    $postbody = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
    $postbody = preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
    $postbody = preg_replace("#\[url\][\s]*([\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
    $postbody = preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
                             '<a href="\\1" target=_blank>\\2</a>',
                             $postbody);
    $postbody = str_replace("`","'",$postbody);
    return $postbody;
}

   
 
 автор: himic   (07.08.2007 в 21:08)   письмо автору
 
   для: Hades   (07.08.2007 в 20:58)
 

Попробуй внаглую
<?
echo preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="\\2" style="border: 2px solid" \\1>',"[img=center]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]" ); 
?>


Отредактированно:
Нашёл ошибку, у меня эта функция заменят вот это дело
[img align=center]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]
А ты заменяешь это
[img=center]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]

Делай как у меня, потом мне например понадобилось прописывать и другие параметры
[img border=0]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]
[img class=white]http://site.ru/e107_images/newsp ost_images/image-team-011.jpg[/img]

   
 
 автор: Hades   (07.08.2007 в 22:46)   письмо автору
 
   для: himic   (07.08.2007 в 21:08)
 

вот в форме я отправляю обработчику такой запрос :

[img align=left]http://softtime.ru/skins/extend/mages/pen.gif[/img]

jобрабатываю функцией :

function post($postbody)
{
    $postbody = preg_replace('/\[email=([^\]]+)\](.*?)\[\/email\]/ism','<a class="guesthrefemail" href="mailto:\1">\2</a>',$postbody);
    $postbody = preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="\\2" style="border: 2px solid" \\1>',$postbody);
    $patern="#\[[\s]*url[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/url[\s]*\]#i";
    $replacment = '<a class="guesthrefurl" href=\\1>\\2</a>';
    $postbody = preg_replace($patern, $replacment, $postbody);
    // Тэги
    $postbody = preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
    $postbody = preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
    $postbody = preg_replace("#\[url\][\s]*([\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
    $postbody = preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
                             '<a href="\\1" target=_blank>\\2</a>',
                             $postbody);
    $postbody = str_replace("`","'",$postbody);
    return $postbody;
}

вообще ничего не заменяет он у меня (((((((( просто не хочет и все ((


и еще вопросик к регулярным: вот в форме запрос [video=http://localhost/video/mr.avi] как сделать так чтобы плеер его воспроизводил????

   
 
 автор: himic   (08.08.2007 в 15:37)   письмо автору
 
   для: Hades   (07.08.2007 в 22:46)
 

насчёт воспроизведения это другой вопрос, лучше создай новую тему


Вот так сделай, всё должно пахать, всё больше ничем не могу помочь

function split_text($matches)
{
return wordwrap($matches[1], 60, ' ',1);
}


function post($postbody) {
$post=$postbody;
// $post=wordwrap($post,50,' ',1);
$post = preg_replace_callback("|([a-zа-я\d!]{60,})|i","split_text",$post);
$text = "
";
    $lastocc = 0;
    $sndocc = 1;
    $result = "";
    while($sndocc)
    {
      $fstocc = strpos($post,"[code]",$lastocc);
      $sndocc = strpos($post,"
",$fstocc);
if(($fstocc>0 && $sndocc>0 && $lastocc>0) || ($fstocc >= 0 && $sndocc>0 && $lastocc == 0))
{
$result .= nl2br(htmlspecialchars(substr($post,$lastocc,$fstocc - $lastocc)));
$result .= "<table border=0 ><tr><td class=codeblock>".highlight_string(substr($post,$fstocc + 6,$sndocc - $fstocc - 6),true)."</td></tr></table>";
$lastocc = $sndocc + 7;
}
else
{
$result .= nl2br(htmlspecialchars(substr($post,$lastocc,strlen($post)-$lastocc)));
break;
}
}
$post = $result;

$post = preg_replace("#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#i","<a href=\"$1\">$2</a>",$post);
$post = preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s](.*)\](.*?)\[/url\]#isU",'<a href="\\1" \\2>\\3</a>',$post);
$post = preg_replace( "#\[zag\](.+?)\[/zag\]#is", "<span class=\"grayDk\">\\1</span>", $post );
$post = preg_replace( "#\[email\](\S+?)\[/email\]#i", "<a href='mailto:\\1' class=\"style1\">\\1</a>", $post );
$post = preg_replace( "#\[email\s*=\s*\&quot\;([\.\w\-]+\@[\.\w\-]+\.[\.\w\-]+)\s*\&quot\;\s*\](.*?)\[\/email\]#i", "<a href='mailto:\\1' class=style1>\\2</a>", $post );
$post = preg_replace( "#\[email\s*=\s*([\.\w\-]+\@[\.\w\-]+\.[\w\-]+)\s*\](.*?)\[\/email\]#i", "<a href='mailto:\\1' class=style1>\\2</a>", $post );
$post = preg_replace("#\[quote\]\s*(.*?)\s*\[/quote\]#is"," <table width=80% border=0 cellpadding=0 cellspacing=1 bgcolor=#cdcdcd style=\"padding: 5px;\"><tr><td style=\"font-size:10px;\">$1</td></tr></table>",$post);
$post = preg_replace('#\[img(.*?)\](.+?)\[/img\]#','<img src="$2" $1>',$post);
$post = preg_replace( "#\[b(.*?)\](.+?)\[/b\]#is", "<b $1>\\2</b>", $post );
$post = preg_replace( "#\[i\](.+?)\[/i\]#is", "<i>\\1</i>", $post );
$post = preg_replace( "#\[u\](.+?)\[/u\]#is", "<u>\\1</u>", $post );
$post = preg_replace( "#\[li\](.+?)\[/li\]#is", "<li>\\1</li>", $post );
$post = preg_replace( "#\[box(.*?)\](.+?)\[/box\]#is", "<table width=\"100%\" class=\"style1\" cellpadding=\"0\" cellspacing=\"0\" \\1><tr><td>\\2</td></tr></table>", $post );
$post = preg_replace("#\[table(.*?)\](.*?)\[\/table\]#is","<table$1 border=\"0\" cellpadding=\"4\" cellspacing=\"1\" bgcolor=\"#6e6e6e\" class=\"style1\"><tbody>$2</tbody></table>",$post);
$post = preg_replace( "#\[tr(.*?)\](.+?)\[/tr\]#is", "<tr$1>$2</tr>", $post );
$post = preg_replace( "#\[td(.*?)\](.+?)\[/td\]#is", "<td bgcolor=#c5c5c5 $1>$2</td>", $post );
$post = preg_replace( "#\[div(.*?)\](.+?)\[/div\]#is", "<div $1>$2</div>", $post );
$post = preg_replace("#\[a\s*=\s*(\S+?)\s*\](.*?)\[\/a\]#i","<a name=$1>$2</a>",$post);

return $post;
}

   
 
 автор: Hades   (08.08.2007 в 23:02)   письмо автору
 
   для: himic   (08.08.2007 в 15:37)
 

все работает ))))) пасибо огромное ........

   
Rambler's Top100
вверх

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