2016-07-21 10 views
0

<a href="...">にはPHPがないリンクをhttp(s)://に追加するにはどうすればよいですか?この入力は多くのhtml入力から来ており、私は<a>タグで間違っているリンクのみを修正したいと思います。例えば、私はこの<a>タグにhttpを追加します。

<html><body><a href="google.com">link</a></body></html> 

が変更ばかりのhtmlの残りせずに、この

<html><body><a href="https://google.com">link</a></body></html> 

に変身します。

さらに、htmlを解析してプレーンテキストのリンクを見つけ、残りのHTMLを変更することなく<a href="...">に変換するにはどうすればよいですか?

ありがとうございました。

+0

あなたの試みを自分で作る必要があり、これは無料のコーディングサービスではありません。一度あなたが試着した場合、あなたの試みは、あなたの試行と問題を投稿する –

+0

私はこのウェブサイト上の多くの記事を検索し、それらの結果を変更しましたが、私は完全に失われて何も動作しません。私は正規表現をよく知らないし、これを動作させる方法を見つけることができない。 –

+0

HTMLを解析し、 'href'属性を取り出し、プロトコルがあるかどうかを確認します。おそらく '^ https?://'(非 '/'デリミタ付き)です。 – chris85

答えて

1

私は前の回答を使用してのDOMDocumentを使用して簡単にこれを行う方法を見つけた:

function addScheme($url, $scheme = 'http://'){ 
    return parse_url($url, PHP_URL_SCHEME) === null ? $scheme . $url : $url; 
} 
// parse the html 
$dom = new DOMDocument; 
$dom->loadHTML($text); 
// make sure links are correct 
$a_tags = $dom->getElementsByTagName('a'); 
foreach ($a_tags as $a) { 
    // make sure that links start with http(s) 
    $a->setAttribute('href', addScheme($a->getAttribute('href'))); 
} 
// save parsed version 
$text = $dom->saveHTML(); 
関連する問題