preg_replace 和 twitter

发布于 2024-11-02 00:55:09 字数 807 浏览 3 评论 0原文

我有这段代码可以在我的应用程序中创建可点击的链接:

$string = preg_replace('!(((f|ht)tp://)[-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+)!i', '<a href="$1" rel="nofollow">$1</a>', $string);
$string = preg_replace('/@(\w+)/', '<a href="http://twitter.com/$1" rel="nofollow">$0</a>', $string);
$string = preg_replace('/#(\w+)/', '<a href="http://search.twitter.com/search?q=%23$1" rel="nofollow">$0</a>', $string);

上面的代码工作正常,但突然我看到一些链接,例如 http://twitter.com/#!/usernamehttp: //domain.com/hello@all/ 并破坏了一切,知道如何修复我的代码吗?

string var 直接来自 twitter API,下面是一个示例: $string = 'http://twitter.com/!#/metalica http://someurl.com/get@stuff/';

提前致谢。 编辑:添加字符串值。

i have this code to make clickable links into my app:

$string = preg_replace('!(((f|ht)tp://)[-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+)!i', '<a href="$1" rel="nofollow">$1</a>', $string);
$string = preg_replace('/@(\w+)/', '<a href="http://twitter.com/$1" rel="nofollow">$0</a>', $string);
$string = preg_replace('/#(\w+)/', '<a href="http://search.twitter.com/search?q=%23$1" rel="nofollow">$0</a>', $string);

Above code is working fine, but suddenly Im seeing some links like http://twitter.com/#!/username and http://domain.com/hello@all/ and breaks everything, any idea how to fix my code?

string var comes directly from twitter API, here is an example: $string = 'http://twitter.com/!#/metallica http://someurl.com/get@stuff/';

Thanks in advance.
Edited: added string value.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深海少女心 2024-11-09 00:55:09

为什么要篡改这些 URL?如果它们是直接链接,则保持原样即可!像这样的简单正则表达式模式:

((?:f|ht)tp://[^\s]*)

将匹配字符串中的任何 URL。

所以,你的代码应该是:

$string = preg_replace('/((?:f|ht)tp:\/\/[^\s]*)/i', '<a href="$1" rel="nofollow">$1</a>', $string);

Why are you tampering with those URL? If they are direct links, then just leave them as they are! Simple regex pattern like this:

((?:f|ht)tp://[^\s]*)

will match any URL inside the string.

So, your code should be just:

$string = preg_replace('/((?:f|ht)tp:\/\/[^\s]*)/i', '<a href="$1" rel="nofollow">$1</a>', $string);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文