Dav*_*vid 13 php regex html-parsing
我需要一个正则表达式,它会给我一个href标签内部的字符串和引号内部.
例如,我需要在以下内容中提取theurltoget.com:
<a href="theurltoget.com">URL</a>
Run Code Online (Sandbox Code Playgroud)
另外,我只想要基本网址部分.即http://www.mydomain.com/page.html我只想要http://www.mydomain.com/
Dre*_*ter 17
不要使用正则表达式.你可以使用xpath和内置的php函数来获得你想要的东西:
$xml = simplexml_load_string($myHtml);
$list = $xml->xpath("//@href");
$preparedUrls = array();
foreach($list as $item) {
$item = parse_url($item);
$preparedUrls[] = $item['scheme'] . '://' . $item['host'] . '/';
}
print_r($preparedUrls);
Run Code Online (Sandbox Code Playgroud)
Ale*_*lec 12
$html = '<a href="http://www.mydomain.com/page.html">URL</a>';
$url = preg_match('/<a href="(.+)">/', $html, $match);
$info = parse_url($match[1]);
echo $info['scheme'].'://'.$info['host']; // http://www.mydomain.comRun Code Online (Sandbox Code Playgroud)
如果您只是寻找基本网址部分(@David问题的第2部分),请使用@Alec的答案!
$html = '<a href="http://www.mydomain.com/page.html" class="myclass" rel="myrel">URL</a>';
$url = preg_match('/<a href="(.+)">/', $html, $match);
$info = parse_url($match[1]);
Run Code Online (Sandbox Code Playgroud)
这会给你:
$info
Array
(
[scheme] => http
[host] => www.mydomain.com
[path] => /page.html" class="myclass" rel="myrel
)
Run Code Online (Sandbox Code Playgroud)
所以你可以用$href = $info["scheme"] . "://" . $info["host"]
它给你:
// http://www.mydomain.com
Run Code Online (Sandbox Code Playgroud)
当你在href之间寻找整个url时,你应该使用另一个正则表达式,例如@ user2520237提供的正则表达式.
$html = '<a href="http://www.mydomain.com/page.html" class="myclass" rel="myrel">URL</a>';
$url = preg_match('/href=["\']?([^"\'>]+)["\']?/', $html, $match);
$info = parse_url($match[1]);
Run Code Online (Sandbox Code Playgroud)
这会给你:
$info
Array
(
[scheme] => http
[host] => www.mydomain.com
[path] => /page.html
)
Run Code Online (Sandbox Code Playgroud)
现在你可以使用$href = $info["scheme"] . "://" . $info["host"] . $info["path"];
它给你:
// http://www.mydomain.com/page.html
Run Code Online (Sandbox Code Playgroud)