Создавайте автоматические ссылки в тексте из файла: Например, Внутренняя Википедия - PHP


Мне нужна помощь в написании этого сценария, который я создаю...

Я хочу, чтобы мой сайт сам по себе был википедией... возьмем, к примеру, мой веб-сайт на php... Я публикую ежедневные статьи об этом.

Предположим, я опубликую 2 статьи о Дженне Буш и Майкле Джексоне соответственно

Теперь я сохраняю в текст/xml/текст базы данных и связываю

Пример

jenna bush, http://www.domain.com/jenna.html    
michael jackson, http://www.domain.com/michael.html

Или любыми способами, которые требуются, например

<xml>
<item>
<text>jenna bush</text>
<link>http://www.domain.com/jenna.html</link>
</item>
... etc
</xml>

Теперь я хочу, чтобы PHP-скрипт автоматически конвертировал любую дженну буша или любого Майкла Джексона, связанного с их соответствующими ссылками по всему моему веб-сайту...

Мы будем очень признательны за любую помощь...

Author: skaffman, 2009-09-02

3 answers

Предполагая, что текст, содержащий эти слова, находится в базе данных, лучший способ добиться чего-то подобного - использовать str_replace http://ie2.php.net/manual/en/function.str-replace.php

Непосредственно перед отправкой текста в базу данных вы запускаете в нем функцию, которая ищет определенные фразы и заменяет их другими фразами.

Альтернативный и, вероятно, лучший подход - тот же, что и mediawiki (программное обеспечение, на котором работает википедия)., каждый раз, когда вы хотите создать ссылку на другую статью в mediawiki, вы помещаете [[]] вокруг нее, например [[Майкл Джексон]]. Таким образом, у вас будет больше контроля над тем, что становится связующим звеном.

Пример: Если у вас есть статья о принце-музыканте и одна о принце Чарльзе, и вы хотите связать ее с принцем Чарльзом, первый метод может сначала найти принца и связать с ним, однако, если вы используете метод mediawiki, вы напишете [[Принц Чарльз]], и он будет знать, что искать. Чтобы сделать это Я бы рекомендовал preg_match http://www.php.net/manual/en/function.preg-match.php

Возможно, стоит взглянуть на то, как mediawiki делает то же самое, вы можете скачать его бесплатно, и он написан на php

 1
Author: , 2009-09-02 10:17:33

Я настроил его, и вот для всех заинтересованных

function tags_autolink($text) 
{

$text = " $text ";
$query_tags_autolink = "SELECT tag from tags";
$rs_tags_autolink = mysql_query($query_tags_autolink) or print "error getting tags";

while($row_tags_autolink = mysql_fetch_array($rs_tags_autolink))
{
$tag_name = trim($row_tags_autolink['tag']);
$tag_url = "http://www.domain.com/tag/".createLink(trim(htmlentities($tag_name)))."/";
$text = preg_replace("|(?!<[^<>]*?)(?<![?./&])\b($tag_name)\b(?!:)(?![^<>]*?>)|imsU","<a href=\"$tag_url\">$1</a>" , $text);
}

return trim( $text );
}

Функция создания ссылки просто создает строку "abcd - это kk", как "abcd-это-kk" для окончания страницы тега;)

Ура!

 1
Author: foxybagga, 2009-09-02 18:16:59
function auto_href($x)
        {
        $x = explode(' ', $x);
        foreach ($x as $y)
                {
                if (substr($y, 0, 7) == 'http://')
                        $y = '<a href="'.$y.'">'.$y.'</a>';
                $z[] = $y;
                }
        return implode($z, ' ');
        }
 0
Author: Phil Romov, 2010-08-06 17:15:22