2

私が作成しているこのスクリプトについて助けてほしい...

私は自分のウェブサイトをそれ自体がウィキペディアにしたいと思っています...たとえば、私はphpウェブサイトを持っています...私はそれに毎日の記事を公開しています。

ジェナ・ブッシュとマイケル・ジャクソンに関する 2 つの記事をそれぞれ公開するとします。

今、私は 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スクリプトが、私のウェブサイト全体でそれぞれのリンクにリンクされているジェナ・ブッシュまたはマイケル・ジャクソンを自動的に変換することです...

どんな助けでも大歓迎です...

4

5 に答える 5

1

これらの単語を含むテキストがデータベースにあると仮定すると、そのようなことを達成するための最良の方法は、str_replace http://ie2.php.net/manual/en/function.str-replace.phpを使用することです。

テキストがデータベースに送信される直前に、特定のフレーズを探して他のフレーズに置き換える関数を実行します。

あるいは、おそらくより良いアプローチは、メディアウィキ (ウィキペディアが実行するソフトウェア) と同じものです。メディアウィキで別の記事へのリンクを作成したいときはいつでも [[ ]] で囲みます。たとえば、[[マイケル・ジャクソン] ]]。そうすれば、リンクになるものをより細かく制御できます。

例: ミュージシャンのプリンスに関する記事とチャールズ皇太子に関する記事があり、チャールズ皇太子にリンクしたい場合、最初の方法では最初にプリンスを見つけてリンクすることができますが、mediawiki の方法を使用する場合は [[プリンスCharles]] であり、何を探すべきかがわかります。そのためには、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

ウィキペディアの自動ハイパーリンクコードは、mediawiki:Parser.php、メソッドhandleMagicLinksおよびmakeFreeExternalLinkにあります。

最初はプロトコルを検索し、後者は末尾の句読点などを削除します。

于 2021-05-03T14:39:01.340 に答える
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 に答える