如果php发现某些文本使其成为链接

时间:2012-09-18 03:27:35

标签: php regex

所以我有一个功能可以在我的网站<?=stripslashes($row['tweet_text'])?>输出已保存的推文。对于包含@user内容的推文,我想要链接。那么,如果它找到字母@,那么如何将它与连接到它的文本转换为可以转到www.twitter.com/user的链接

因此,如果找到@username之类的文字,则会将其设为链接

<a href="http://www.twitter.com/username">@username</a>

3 个答案:

答案 0 :(得分:3)

<?= preg_replace('/@(\w+)/', '<a href="https://www.twitter.com/$1">@$1</a>', stripslashes($row['tweet_text']))?>

对于哈希标记:

<?= preg_replace('/#(\w+)/', '<a href="https://twitter.com/#!/search/$#$1">#$1</a>', stripslashes($row['tweet_text']))?>

答案 1 :(得分:1)

这是你想要的:

<?php

$text = 'asd asd asd asd as @user aasda sad asd @yyy sd';

$text = preg_replace('/(.*?)\@([A-Za-z0-9_]+)(.*?)/', '$1<a href="http://www.twitter.com/$2">@$2</a>$3', $text);

?>

任何有@ + A-Za-z0-9_的内容都会更改为链接...

答案 2 :(得分:0)

我猜您可以使用preg_match_all来获取用户名,假设用户名不包含任何空格:

$usernames = preg_match_all( "|\@(.*) |" , stripslashes($row['tweet_text']) , $match );

$usernames = $match[0];

//loop through usernames and do whatever (replace, get data, etc etc)

如果您只想用http://twitter.com/username替换所有用户名,请在输出中使用preg_replace

preg_replace('|\@(.*)|', '<a href="http://www.twitter.com/$1">@$1</a>', stripslashes($row['tweet_text']))