php - 从推特网址中删除@?
问题描述
我已经设法弄清楚如何从 URL 中获取 Twitter 用户名,但我还需要它来删除 @ ,这我运气不好。
$twitter_url = https://twitter.com/@twitter;
if (preg_match("/^https?:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(\/\w+)*$/", $twitter_url, $regs)) {
}
$twitterUsername = $regs['name'];
这很好,但它的显示为...
@twitter
当我只需要它减去@时,我不能 100% 确定如何在正则表达式中执行此操作,有人可以帮忙吗?
解决方案
@
您可以在组之前添加一个可选的name
:
'~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~'
^^
请参阅正则表达式演示。因此,如果该name
部分以 开头@
,它将被可选的(但贪婪的)@?
子模式所消耗,并且(?<name>[^\/]+)
会将 URL 子部分的其余部分抓取到name
组中。
请注意,~
这里的正则表达式分隔符可能更方便,以免过度转义模式内的正斜杠。
$re = '~^https?://(www\.)?twitter\.com/(#!/)?@?(?<name>[^/]+)(/\w+)*$~';
$str = 'https://twitter.com/#!/@tweet';
if (preg_match($re, $str, $m)) {
echo $m['name']; // => tweet
}
推荐阅读
- opencv - Tesseract OCR v4 应该做哪些图像预处理
- javascript - Material-ui 文本字段在重新渲染后失去焦点。如何解决?
- linux - Linux PTP so_timestamping 标志
- kubernetes - etcd 使用什么操作系统
- material-ui - Material ui select Inputlabel 使用主题定位
- typescript - 带有 forEach 循环的 async/await 关键字 - 打字稿
- php - Wordpress如何删除导航菜单中自动生成的
- leaflet - 加载传单时加载脚本
- multithreading - 使用 Snowflake JDBC 驱动程序的多线程
- laravel - 如何在 laravel 的 mailable 类中传递邮件正文