2

我需要关于我正在制作的这个脚本的帮助......

我希望我的网站本身就是一个维基百科……例如,我有一个 php 网站……我在上面发布每日文章。

假设我分别发表了 2 篇关于 Jenna Bush 和 Michael Jackson 的文章

现在我保存到 text/xml/database 文本和链接

例子

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 脚本应该自动转换任何 jenna bush 或任何链接到我网站上各自链接的 michael jackson...

任何帮助深表感谢...

4

5 回答 5

1

假设包含这些单词的文本在数据库中,实现类似目标的最佳方法是使用 str_replace http://ie2.php.net/manual/en/function.str-replace.php

在将文本提交到数据库之前,您可以在其上运行一个函数来查找某些短语并用其他短语替换它们。

或者,可能更好的方法与 mediawiki(运行维基百科的软件)使用的方法相同,每次您想在 mediawiki 中创建指向另一篇文章的链接时,您都会在其周围加上 [[ ]],例如 [[Michael Jackson ]]。这样您就可以更好地控制成为链接的内容。

例子:如果你有一篇关于音乐家王子的文章和一篇关于查尔斯王子的文章,并且你想链接到查尔斯王子,第一种方法可能会先找到 Prince 并链接到他,但是如果你使用 mediawiki 方法,你会写 [[Prince查尔斯]],它会知道要寻找什么。为此,我建议 preg_match http://www.php.net/manual/en/function.preg-match.php

可能值得看看 mediawiki 如何做同样的事情,你可以免费下载它,它是用 php 编写的

于 2009-09-02T10:17:33.580 回答
1

我定制了它,这里是给所有感兴趣的人的

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 is kk”字符串,如“abcd-is-kk”;)

干杯!

于 2009-09-02T18:16:59.507 回答
0
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, ' ');
        }
于 2010-08-06T17:15:22.807 回答
0
function tags_autolink() 
{
    $conn = mysqli_connect("localhost", "root", "", "sample")
or die ("Could not connect to mysql because ".mysqli_error());

$text = 'You paragraph or text here';
$query_tags_autolink = "SELECT tag from tags";
$rs_tags_autolink = mysqli_query($conn,$query_tags_autolink) or print "error getting tags";

while($row_tags_autolink = mysqli_fetch_array($rs_tags_autolink))
{
$tag_name = trim($row_tags_autolink['tag']);
$trimedurl = str_replace(' ', '-',$tag_name);
$trimedurl=strtolower("$trimedurl");
$tag_url = "http://yourdomain/tag/$trimedurl";
$text = preg_replace("|(?!<[^<>]*?)(?<![?./&])\b($tag_name)\b(?!:)(?![^<>]*?>)|imsU","<a href=\"$tag_url\">$1</a>" , $text);
}

return  trim($text);
}

echo tags_autolink() ;
于 2019-09-03T11:33:12.367 回答
0

维基百科的自动超链接代码在 mediawiki:Parser.php,方法handleMagicLinksmakeFreeExternalLink中。

第一个搜索协议,后者删除诸如尾随标点符号之类的东西。

于 2021-05-03T14:39:01.340 回答