Создавайте автоматические ссылки в тексте из файла: Например, Внутренняя Википедия - 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-скрипт автоматически конвертировал любую дженну буша или любого Майкла Джексона, связанного с их соответствующими ссылками по всему моему веб-сайту...
Мы будем очень признательны за любую помощь...
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
Я настроил его, и вот для всех заинтересованных
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" для окончания страницы тега;)
Ура!
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, ' ');
}