Forum Webscript.Ru
Программирование => PHP => Тема начата: kder от 03 Июля 2006, 00:13:53
-
Вобщем такое дело отци.. Незнаю что делать, прошу у вас помощи.
Использую скрипт coBreeder 2005 в локальной сети как WareZ портал. Юзеры могут оставлять ссылки на ftp и http, но это не очень практичн так как в нашей большой сети более распространено p2p нежели ftp, да и не все хотят ставить себе ftp сервер. Соот-но нужно чтобы скрипт мог обрабатывать magnet ссылки для p2p. Тоесть юзер вставляет magnet ссылку просто как текст а она после постинга будет смотреть как полноценная magnet ссылка.
Поспрашивал у знакомых говорят что это в BBCode нада рытся, но дело в том что я плохо его знаю.
Мои действия: Открыл фаил (в котором по видимому список BBCode, нашел строки где обрабатываются Url ссылки, но я незнаю что писать чтобы могли обрабатыватся magnet как норм ссылки для p2p)
Пример содержания (не всё содержимое ;) ) того файла привожу ниже:
// [URL]
$this->bbcodes[\'standard\'][\'find\'][\'[url]\'] = \'#\\[url\\](.*)\\[/url\\]#esiU\';
$this->bbcodes[\'standard\'][\'replace\'][\'[url]\'] = "\\$this->handle_bbcode_url(\'\\\\1\', \'\', \'url\')";
$this->bbcodes[\'standard\'][\'recurse\'][\'url\'][0] = array(\'handler\' => \'\\$this->handle_bbcode_url\');
//
$this->bbcodes[\'standard\'][\'find\'][\'[url=\'] = \'#\\[url=("|"|\\\'|)(.*)\\\\1\\](.*)\\[/url\\]#esiU\';
$this->bbcodes[\'standard\'][\'replace\'][\'[url=\'] = "\\$this->handle_bbcode_url(\'\\\\3\', \'\\\\2\', \'url\')";
$this->bbcodes[\'standard\'][\'recurse\'][\'url\'][1] = array(\'handler\' => \'\\$this->handle_bbcode_url\');
Прошу вашей помощи, так как я ещё глуп для такого уровня ;) (http://XXX)
-
Жаль что незнаете
-
kder
Могу сказать, что:
1. Ты не тот кусок привел в качестве кода :)
2. Лучше было бы не ссылаться на скрипт (95% читающих он неизвестен), а показать, что имеешь на входе и что на выходе.
Instant solution:
- В первой строке во второй части пишешь регулярку для определения magnet-ссылки (use мозг и/или гугль)
- во второй - тупо ("N-chunk для url", "N-chunk для заголовка если, нужен", \'url\')
- третья такая же, разве что номер правила другой
- и во всех придумываешь id для правила (например, [magnet])
[off]Рыться в гугле я за тебя не буду, сорри.[/off]
-
Если я не ошибась то вверху написал bbcode для url а тут обработчик, помогите, скажите что и где писать чтоб magnet:? тоже обрабатывали, я пытался разобратся не получается
private function handle_bbcode_url($text, $link, $type = \'url\')
{
if (!trim($text))
{
return \'\';
}
$rightlink = trim($link);
if (empty($rightlink))
{
// no option -- use param
$rightlink = trim($text);
}
$rightlink = str_replace(\'"\', \'"\', $rightlink);
if($type == \'url\' AND !preg_match(\'#^[a-z0-9]+://#si\', $rightlink))
{
$rightlink = \'http://\'.$rightlink;
}
if (!trim($link) OR $text == $rightlink)
{
$tmp = unhtmlspecialchars($rightlink);
if (strlen($tmp) > $this->wordwrap)
{
$text = htmlspecialchars_uni(substr($tmp, 0, $this->wordwrap - 15) . \'...\' . substr($tmp, -15));
}
}
// remove double spaces -- fixes issues with wordwrap
$rightlink = str_replace(\' \', \'\', $rightlink);
// strip extra quotes from hyperlink
$text = str_replace(\'\\"\', \'"\', $text);
if ($type == \'url\')
{
// standard URL hyperlink
return \'\'.$text.\'\';
}
else
{
// email hyperlink (mailto:)
if (is_valid_email($rightlink))
{
return \'\'.$text.\'\';
}
else
{
// not a valid email - don\'t link it
return \'\'.$text.\'\';
}
}
}
-
kder
Второй кусок кода здесь не особо нужен. Так, логику понять.
Решение я тебе обрисовал.
Регулярку можно начать искать здесь: http://magnet-uri.sourceforge.net/