php - 正则表达式从 url 中选择路径以在 preg_replace() 中使用它
问题描述
如何在 php 中使用正则表达式选择
http(s)://domain.tdl/path
url中的所有内容,http(s)://domain.tdl
然后将/path
其preg_replace()
用作搜索模式。另一个问题:如何
preg_replace()
在一个字符串中使用正则表达式填充参数,以便仅从原始完整 urlhttp(s)://domain.tdl/path
获取http(s)://domain.tdl
。
我无法更改 php 脚本的代码,并且我preg_replace()
从 Web 表单发送参数。我只能在那个 web 表单中传递preg_replace()@pattern
和@replacement
参数。
PS Urls 和域总是不同的。
谢谢!
解决方案
在我看来,您只想获得带有协议的域,以及最后的路径。如果是这样,试试这个:
$url = 'https://domain.tdl/path';
$urlArr = parse_url($url);
var_dump("$urlArr[scheme]://$urlArr[host]"); // Returns http://domain.tdl
var_dump($urlArr['path']); // Returns /path
parse_url
有趣的是,这使用 PHP 的函数来解析 url。
或者,如果你真的需要使用正则表达式,试试这个:
$url = 'https://domain.tdl/path';
preg_match('/(https?:\/\/(?:www\.)?[a-z]+\.[a-z]+)(\/.*)/i', $url, $matches);
var_dump($matches[1]); // Returns http://domain.tdl
var_dump($matches[2]); // Returns /path
推荐阅读
- spring - 从 application.yaml 文件中读取 cron 表达式值时 Spring 调度程序不起作用
- javascript - 解析日期字符串 '' 时出错;0:数据缺失 '\u0000'
- pagination - fastapi contrib 有 postgresql 的分页器吗?
- javascript - 使用 Java 脚本保存跟踪的 GPS 数据
- ruby-on-rails - 未定义的方法`add_column_for_on_duplicate_key_update` - activerecord-import
- c++ - boost::spirit::x3 中的通用解析器生成器
- python - 从 python 中重新启动 ipyparall 引擎
- python - 无法使用 Django 连接到 firebird 数据库
- excel - VBA - 删除临时文件中的查询
- javascript - Bootstrap 4更改特定元素的工具提示颜色