2017-11-03 27 views
0

html文字列からリンクを抽出する関数が必要です。 例:文字列からハイパーリンクを抽出するPHP関数

文字列:

<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK - 
-> <a href='http://www.link.com' target='_blank'>text</a> <img 
src='http://www.linkimage.com' BORDER='0' WIDTH='1' HEIGHT='1' /> <!-- END 
PARTNER PROGRAM --> 

を抽出する必要があります:

http://www.link.com 

Thxを

+0

https://www.mkyong.com/regular-expressions/how-to-extract-html-links-with-regular-expression/ – mic

+2

「あなたは何を試しましたか、どこに止まっていますか?質問...ヒント:[RegExp](https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)を使用しないでください。 [DOMDocument](http://php.net/manual/en/class.domdocument.php) – CD001

答えて

0
$string = "<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK - 
-> <a href='http://www.link.com' target='_blank'>text</a> <img 
src='http://www.linkimage.com' BORDER='0' WIDTH='1' HEIGHT='1' /> <!-- END 
PARTNER PROGRAM --> "; 

    $link = explode('<a href=\'', $string)[1]; 
    $link = explode('\'',$link)[0]; 
    echo $link; 

    $linkimage = explode('src=\'', $string)[1]; 
    $linkimage = explode('\'',$linkimage)[0]; 
    echo $linkimage; 
+0

パーフェクト!ありがとう! – Pau

+0

'http:// www.linkimage.com'を取得するためにコードを変更する方法 – Pau

0

迅速N汚い方法:

preg_match_all('~href=([\'"])([^\'"]+)\\1~is', $htmlString, $matches); 

print_r($matches[2]); 

適切な方法:

http://php.net/manual/en/domdocument.getelementsbytagname.php/http://php.net/manual/en/simplexmlelement.xpath.phpなど..に適切な方法で

問題は、解析する前にHTMLを整理する必要があるということです。場合によっては、PHPネイティブのhttp://php.net/manual/en/book.tidy.phpでもそれを正しく行うことができません。

関連する問題