[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: bb-код, ссылка
Hugo_O
if ($bb[$i]=="/\[a\]/i")
{
$linkscount=preg_match_all("/\[a\](.*?)\[\/a\]/i",$message,$linkscounts);
for ($l=0;$l<$linkscount; $l++){
$taglinks[$l]="<a class='menulinks' href='".$linkscounts[1][$l]."'>";
$message=preg_replace("/\[a\]/i", $taglinks[$l], $message);
}

}


не хватает мозга)
как сделать замену [a] на "<a href='текст, который между [a] и [/a]'>" ?



Спустя 2 часа, 56 минут, 51 секунда (14.06.2010 - 18:40) ИНСИ написал(а):
что-то, в этом роде можно сделать:

$text = 'sdbsdb[a]sdbhskdghbsjdhbksdjb[/a]sdbsdbsdb'; // сам текст, где используется специальный тег
$myReplaceText = '<a href="'; // текст, который заменит специальный тег
$myReplaceTextTwo = '">Link</a>'; // текст, который заменит специальный тег
$textReplace = str_replace('[a]',$myReplaceText,$text); // функция, которая заменит тег
$textReplace = str_replace('[/a]',$myReplaceTextTwo,$textReplace); // функция, которая заменит тег

Спустя 11 минут, 4 секунды (14.06.2010 - 18:51) Hugo_O написал(а):
welbox2
все четко, я также мыслил и то что ты написал я в сразу по этому пути и шел, только один ньюанс возник:
Link ты написал, но у каждой ссылки разный и мы не знаем какой, пользователь его вводит ведь. + ссылок может быть несколько, то есть нам нужно как-то достать текст sdbhskdghbsjdhbksdjb из КАЖДОЙ ССЫЛКИ и поместить его в Link этой ссылки.
мозг вскипел,не знаю как сделать!

Спустя 23 минуты, 5 секунд (14.06.2010 - 19:14) Hugo_O написал(а):
ладно,
"/^(http:\/\/|https:\/\/)?([^\.\/]+\.)*([a-zA-Z0-9])([a-zA-Z0-9-]*)\.([a-zA-Z]{2,4})(\/.*)?$/i"
этот паттерн ищет ссылки.
в переменной $message приходит сообщение, где может быть много ссылок
нужно все обыкновенные ссылки превратить в html теги с соответствующими линками, помогите!!

Спустя 1 час, 13 минут, 19 секунд (14.06.2010 - 20:27) tomash написал(а):
давай пример значения $message

Спустя 27 минут, 59 секунд (14.06.2010 - 20:55) Hugo_O написал(а):
tomash
$message="привет аааа пока [a]mail.ru[/a] [a]index.ru[/a]";
в данном случаи нас интересовали только теги [a] [/a]

на самом деле я уже разобрался, забыл, что preg_replace можно ограничивать в выборе(LIMIT), что меня и спасло, дало возможность дать каждой ссылке уникальный линк!!
то есть я сначала нашел общее число тегов [a] положил их в массив и по очереди давал ссылки в цикле, и все получилось!

но если будут какие-то еще идеи, можете написать - лишних знаний не бывает))

Спустя 2 часа, 32 минуты, 53 секунды (14.06.2010 - 23:28) FatCat написал(а):
А не проще будет посмотреть как это реализовано в движках форумов? Зачем изобретать велосипед?
$txt = preg_replace( "#\[url\](\S+?)\[/url\]#ie"                                       , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\1'))", $txt );
$txt = preg_replace( "#\[url\s*=\s*\&quot\;\s*(\S+?)\s*\&quot\;\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );
$txt = preg_replace( "#\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]#ie" , "\$this->regex_build_url(array('html' => '\\1', 'show' => '\\2'))", $txt );
$txt = preg_replace( "#(^|\s)((http|https|news|ftp)://\w+[^\s\[\]]+)#ie" , "\$this->regex_build_url(array('html' => '\\2', 'show' => '\\2', 'st' => '\\1'))", $txt );


	function regex_build_url($url=array()) {
global $ibforums;

$skip_it = 0;

// Make sure the last character isn't punctuation.. if it is, remove it and add it to the
// end array


if ( preg_match( "/([\.,\?]|!)$/", $url['html'], $match) )
{
$url['end'] .= $match[1];
$url['html'] = preg_replace( "/([\.,\?]|!)$/", "", $url['html'] );
$url['show'] = preg_replace( "/([\.,\?]|!)$/", "", $url['show'] );
}

// Make sure it's not being used in a closing code/quote/html or sql block

if (preg_match( "/\[\/(html|quote|code|sql)/i", $url['html']) )
{
return $url['html'];
}

// clean up the ampersands
$url['html'] = preg_replace( "/&/" , "&" , $url['html'] );

// Make sure we don't have a JS link
$url['html'] = preg_replace( "/javascript:/i", "java script: ", $url['html'] );

// Do we have http:// at the front?

if ( ! preg_match("#^(http|news|https|ftp|aim)://#", $url['html'] ) )
{
$url['html'] = 'http://'.$url['html'];
}

//-------------------------
// Tidy up the viewable URL
//-------------------------


if (preg_match( "/^<img src/i", $url['show'] )) $skip_it = 1;

$url['show'] = preg_replace( "/&/" , "&" , $url['show'] );
$url['show'] = preg_replace( "/javascript:/i", "javascript: ", $url['show'] );

if ( (strlen($url['show']) -58 ) < 3 ) $skip_it = 1;

// Make sure it's a "proper" url

if (!preg_match( "/^(http|ftp|https|news):\/\//i", $url['show'] )) $skip_it = 1;

$show = $url['show'];

if ($skip_it != 1) {
$stripped = preg_replace( "#^(http|ftp|https|news)://(\S+)$#i", "\\2", $url['show'] );
$uri_type = preg_replace( "#^(http|ftp|https|news)://(\S+)$#i", "\\1", $url['show'] );

$show = $uri_type.'://'.substr( $stripped , 0, 35 ).'...'.substr( $stripped , -15 );
}
if(!trim($show))return "<br><b>Illegal Link</b> <b>".$url['html']."</b><br>";
elseif(stristr($url['html'], $ibforums->vars['board_url']) and !stristr($url['html'], "act=Attach"))return $url['st'] . "<a href='".$url['html']."'>".$show."</a>" . $url['end'];
elseif(stristr($url['html'], "act=Attach"))return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
elseif( // Критерии сайтов, получающих прямые линки:
stristr($url['html'], "yandex.")
or stristr($url['html'], "google.")
)
return $url['st'] . "<a href='".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
else
return
$url['st'] . "<a href='".$ibforums->vars['board_url']."/html/counter/counter.php?link=".$url['html']."' target='_blank'>".$show."</a>" . $url['end'];
}

Спустя 28 минут, 57 секунд (14.06.2010 - 23:57) Hugo_O написал(а):
FatCat
спасибо фэт) будем смотреть, что тут интересного!
а я почему-то люблю изобретать велосипед)) по крайней мере пока-что!

Спустя 36 минут, 2 секунды (15.06.2010 - 00:33) FatCat написал(а):
А я люблю к чужому велосипеду еще пяток колес прикрутить. laugh.gif biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.