1

だから私はここにこれを持っています

<? $regex = array('/@(\w+)/','/#(\w+)/','/((www|http:\/\/)[^ ]+)/');
    $replace = array(
    '<a href="https://www.twitter.com/$1">@$1</a>',
    '<a href="https://twitter.com/#!/search/%23$1">#$1</a>',
    '<a href="\1">\1</a>'
); ?>

<?= preg_replace($regex,$replace,stripslashes($row['tweet_text']));?>

最初の 2 つは、@ と # を含むすべてのものをリンクに変換することを想定しています。これは明らかにツイッター用です。しかし、3 つ目は、http または www を含むすべてのものをリンクに変換することになっています。しかし、リンクを台無しにしている最初の 2 つと競合しているようです。

他の2つと競合することなく、3番目のリンクをhttpまたはwwwリンクにするにはどうすればよいですか?

4

1 に答える 1

1

これはせいぜいハックになるでしょうが、これを試すことができます:

<? $regex = array('/((www|http:\/\/)[^ ]+)/', '/(?<!>)@(\w+)/', '/(?<!>)#(\w+)/');
    $replace = array(
    '<a href="\1">\1</a>',
    '<a href="https://www.twitter.com/$1">@$1</a>',
    '<a href="https://twitter.com/#!/search/%23$1">#$1</a>'
); ?>

順序を変えて、最初にリンクを修正し、次に a が前に付いていない場合にのみ置換@#処理を行います>(それらが既にアンカー タグ内にある場合)。

于 2012-09-18T07:06:20.690 に答える