【问题标题】:Get full url regex [duplicate]获取完整的网址正则表达式 [重复]
【发布时间】:2013-10-28 10:01:36
【问题描述】:

我有这个正则表达式,它对 url 正常工作,但是当我使用包含 @ 的 url 时,它在 @ 之后不显示任何内容。我如何编辑正则表达式以显示完整的网址

    <?php

$regex = "/(https?\:\/\/|\s)[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})(\/+[a-z0-9_.\:\;-]*)*(\?[\&\%\|\+a-z0-9_=,\.\:\;-]*)?([\&\%\|\+&a-z0-9_=,\:\;\.-]*)([\!\#\/\&\%\|\+a-z0-9_=,\:\;\.-]*)}*/i";


$url = "http://www.flickr.com/photos/16506140@N05/8376411748/in/photostream/";

preg_match_all($regex, $url, $matches);

echo'<pre>';
print_r($matches);
echo '<pre>';

?>

演示http://codepad.viper-7.com/oVHcdN

【问题讨论】:

  • 好吧,如果你写了它,那么你应该知道你必须在某处添加一些@...为了简单起见,我可以使用~https?://\S+~i
  • @HamZa 从某处复制了它。我对正则表达式非常了解。你能告诉我正则表达式加上@和~https?;//\S+~i
  • 试试这个 $regex = "/(https?\:\/\/|\s)[a-z0-9-]+(\.[a-z0-9-]+ )*(\.[a-z]{2,4})(\/+[a-z0-9_.\:\;-]*)*(\?[\&\%\|\+a-z0- 9_=,\.\:\;-]*)?([\&\%\|\+&a-z0-9_=,\:\;\.-@]*)([\!\#\/ \&\%\|\+a-z0-9_=,\:\;\.-]*)}*/i";
  • @user2894116 anubhava 刚刚找到一个副本,你可以使用它。
  • 想知道这里的讨论。使用parse_url(),仅此而已

标签: php regex


【解决方案1】:

如果您想访问 url 的多个部分,我们强烈建议您使用函数 parse_url() 而不是自定义正则表达式解决方案:

$url = "http://www.flickr.com/photos/16506140@N05/8376411748/in/photostream/";
var_dump(parse_url($url));

输出:

array(3) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(14) "www.flickr.com"
  ["path"]=>
  string(47) "/photos/16506140@N05/8376411748/in/photostream/"
}

【讨论】:

  • 我可以用它代替正则表达式吗?
  • 是的,它旨在替代您的正则表达式解决方案。
猜你喜欢
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2015-02-21
  • 1970-01-01
  • 2018-03-18
  • 2016-11-14
  • 1970-01-01
相关资源
最近更新 更多