使用php查找字符串中的所有子域
你好,这是我的html:使用php查找字符串中的所有子域,php,regex,Php,Regex,你好,这是我的html: <div> hello.domain.com holla.domain.com stack.domain.com overflow.domain.com </div> 你好,域名 holla.domain.com stack.domain.com overflow.domain.com 我想返回一个数组:hello,holla,stack,overflow 然后我有了这个https://hello.domain.com/c/mark?lan
<div>
hello.domain.com
holla.domain.com
stack.domain.com
overflow.domain.com </div>
你好,域名
holla.domain.com
stack.domain.com
overflow.domain.com
我想返回一个数组:hello,holla,stack,overflow
然后我有了这个https://hello.domain.com/c/mark?lang=fr
我想返回值:mark
我知道这应该用正则表达式来完成。只要我知道如何使用正则表达式或不使用正则表达式就好了。谢谢你第1部分:子域
在中查看比赛
匹配数组:
[0] => hello
[1] => holla
[2] => stack
[3] => overflow
解释
修饰符使其不区分大小写i
匹配字母、数字或下划线(我们的匹配)\w+
- 前瞻
断言它后面跟着(?=\.domain\.com)
.domain.com
匹配https://hello\.domain\.com/c/
https://hello.domain.com/c/
告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项\K
匹配任何非空白字符、[^\s#?]+
或?
url片段标记的字符#
- 前瞻
断言它后面跟着一个(?=\?)
?
$input = 'somthing.domain.com';
$string = trim($input, '.domain.com');
可能会对您有所帮助。关于问题的第二部分,您可以使用以下功能:
$yourURL = 'https://hello.domain.com/c/mark?lang=fr';
$result = end(explode('/', parse_url($yourURL, PHP_URL_PATH)));
对于您问题的第二部分(提取URL的一部分),其他人已经用非常具体的正则表达式解决方案回答了。更一般地说,您要做的是解析一个已经存在函数的URL。您会发现以下内容更灵活,适用于其他URL:
php > $url = 'https://hello.domain.com/c/mark?lang=fr';
php > $urlpath = parse_url($url, PHP_URL_PATH);
php > print $urlpath ."\n";
/c/mark
php > print basename($urlpath) . "\n";
mark
php > $url = 'ftp://some.where.com.au/abcd/efg/wow?lang=id&q=blah';
php > print basename(parse_url($url, PHP_URL_PATH)) . "\n";
这假设您在URL路径的最后一部分之后,但是您可以使用
explode(“/”,$urlpath)
访问路径中的其他组件。FYI:为每个模式添加了regex演示+解释。:)谢谢,很高兴能帮上忙。:)的第二个参数是字符串$character\u mask
。此imho只修剪任何.acdiomn
并在g
处停止,因为它不在charlist中。
$yourURL = 'https://hello.domain.com/c/mark?lang=fr';
$result = end(explode('/', parse_url($yourURL, PHP_URL_PATH)));
php > $url = 'https://hello.domain.com/c/mark?lang=fr';
php > $urlpath = parse_url($url, PHP_URL_PATH);
php > print $urlpath ."\n";
/c/mark
php > print basename($urlpath) . "\n";
mark
php > $url = 'ftp://some.where.com.au/abcd/efg/wow?lang=id&q=blah';
php > print basename(parse_url($url, PHP_URL_PATH)) . "\n";