Cha*_*lls 1 php regex html-content-extraction
我需要使用PHP仅提取URL的一部分,但我正在努力达到提取应该停止的设定点.我使用正则表达式从更长的字符串中提取整个URL,如下所示:
$regex = '/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i';
preg_match_all($regex, $href, $matches);
Run Code Online (Sandbox Code Playgroud)
结果是以下字符串:
http://www.cambridgeenglish.org/test-your-english/&sa=U&ei=a4rbU8agB-zY0QWS_IGYDw&ved=0CFEQFjAL&usg=AFQjCNGU4FMUPB2ZuVM45OoqQ39rJbfveg
Run Code Online (Sandbox Code Playgroud)
现在我想只提取这一点http://www.cambridgeenglish.org/test-your-english/.我基本上需要摆脱从头&
开始的一切.
任何人都知道如何实现这一目标?我是否需要运行另一个正则表达式,还是可以将其添加到初始正则表达式?
我建议你放弃正则表达式,让PHP自己的parse_url函数为你做这个:
http://php.net/manual/en/function.parse-url.php
$parsed = parse_url($url);
$my_url = $parsed['scheme'] . '://' . $parsed['hostname'] . $parsed['path'];
Run Code Online (Sandbox Code Playgroud)
获取路径的子串到&,尝试:
$parsed = parse_url($url);
$my_url = $parsed['scheme'] . '://' . $parsed['hostname'] . substr($parsed['path'], 0, strpos($parsed['path'],'&'));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
391 次 |
最近记录: |