2017-08-09 12 views
-1

次のコードを使用して、HTMLページのすべてのリンクを置き換えました。PHPを使用してHTMLページの本文にあるすべてのリンクを置き換えます。

$output = file_get_contents($turl); 
$newOutput = str_replace('href="http', 'target="_parent" href="hhttp://localhost/e/site.php?turl=http', $output); 
$newOutput = str_replace('href="www.', 'target="_parent" href="http://localhost/e/site.php?turl=www.', $newOutput); 
$newOutput = str_replace('href="/', 'target="_parent" href="http://localhost/e/site.php?turl='.$turl.'/', $newOutput); 

echo $newOutput; 

このコードを変更して、本文内のリンクのみを置き換えるようにしたいと思います。

+0

を参照してください。私はあなたが頭を維持する必要があなたのコメントを見ました。私の更新された答えを見て – Andreas

答えて

0

コードを省略することができます。
ボディを見つけて、ボディから頭を2つの変数に分けます。あなたがソースを解析し、操作するためDOMDocumentを使用することができます

//$output = file_get_contents($turl); 

$output = "<head> blablabla 

Bla bla 
</head> 
<body> 
Foobar 
</body>"; 

//Decapitation 
$head = substr($output, 0, strpos($output, "<body>")); 
$body = substr($output, strpos($output, "<body>")); 
// Find body tag and parse body and head to each variable 

$newOutput = str_replace('href="http', 'target="_parent" href="hhttp://localhost/e/site.php?turl=http', $body); 
$newOutput = str_replace('href="www.', 'target="_parent" href="http://localhost/e/site.php?turl=www.', $newOutput); 
$newOutput = str_replace('href="/', 'target="_parent" href="http://localhost/e/site.php?turl='.$turl.'/', $newOutput); 

echo $head . $newOutput; 

https://3v4l.org/WYcYP

+0

はい正確に何が欲しい –

0

。文字列操作を使用する代わりに、このようなタスクに専用のパーサーを使用することは、常に良いアイデアです。

// Parse the HTML into a document 
$dom = new \DOMDocument(); 
$dom->loadXML($html); 

// Loop over all links within the `<body>` element 
foreach($dom->getElementsByTagName('body')[0]->getElementsByTagName('a') as $link) { 
    // Save the existing link 
    $oldLink = $link->getAttribute('href'); 

    // Set the new target attribute 
    $link->setAttribute('target', "_parent"); 

    // Prefix the link with the new URL 
    $link->setAttribute('href', "http://localhost/e/site.php?turl=" . urlencode($oldLink)); 
} 

// Output the result 
echo $dom->saveHtml(); 

https://eval.in/843484

関連する問題