2 回答
TA贡献1826条经验 获得超6个赞
您的问题是您已使用 将正则表达式锚定到字符串的开头^,因此它只会匹配以online. 您可以更改您的正则表达式以匹配.online域名的结尾:
$url = 'http://mywebsite.online/noticia/mi-noticia-copada';
$regexPattern = '#^https?://[^/]+\.online/(.*)$#';
preg_match($regexPattern, $url, $matches);
echo $matches[1] . PHP_EOL;
$url = 'http://mywebsite.online/mi-otra-noticia-copada';
preg_match($regexPattern, $url, $matches);
echo $matches[1];
输出:
noticia/mi-noticia-copada
mi-otra-noticia-copada
TA贡献1820条经验 获得超10个赞
此表达式可能会返回所需的输出:
^https?:\/\/(?:www\.)?(?:[\w]+\.[\w]+)*\/(.*)$
如果你想探索/简化/修改表达式,它已在regex101.com 的右上角面板中进行了 解释。如果您愿意,您还可以在此链接中观看它如何与某些示例输入匹配。
测试
$re = '/^https?:\/\/(?:www\.)?(?:[\w]+\.[\w]+)*\/(.*)$/m';
$str = 'http://mywebsite.online/noticia/mi-noticia-copada
http://mywebsite.online/mi-otra-noticia-copada
http://mywebsite.onlinem.ywebsite.online/noticia/mi-noticia-copada
http://mywebsite.online/mi-otra-noticia-copada
https://www.mywebsite.online/mi-otra-noticia-copada';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
- 2 回答
- 0 关注
- 173 浏览
添加回答
举报