Function externe div laden
Hallo,
Ik probeer in een iframe een bepaald gedeelte van de site te laden (content div)
Hoe zou ik dat het beste kunnen doen of met welke taal is dat het handigste
ik dacht zelf aan een php function :)
De iframe word weergegeven op een facebook app (WooBox)
Alvast bedankt!
Ik probeer in een iframe een bepaald gedeelte van de site te laden (content div)
Hoe zou ik dat het beste kunnen doen of met welke taal is dat het handigste
ik dacht zelf aan een php function :)
De iframe word weergegeven op een facebook app (WooBox)
Alvast bedankt!
Ligt er al aan of het op je eigen server is of dat je iets wilt 'rippen' van een andere site (Zorg dat je hier toestemming voor hebt als die site niet van jou is!)
Met jQuery kun je eenvoudig met load() een pagina of bepaald deel daar van inladen in een div op je eigen pagina.
<div id="content"></div>
<script>
$(document).ready(function() {
$('#content').load('pagina.php #gedeelte');
});
</script>
Als het een externe site is zou je de pagina eerst op moeten halen met CURL() of file_get_contents() en dan het gedeelte wat je wil hebben eruit slopen.
Met jQuery kun je eenvoudig met load() een pagina of bepaald deel daar van inladen in een div op je eigen pagina.
<div id="content"></div>
<script>
$(document).ready(function() {
$('#content').load('pagina.php #gedeelte');
});
</script>
Als het een externe site is zou je de pagina eerst op moeten halen met CURL() of file_get_contents() en dan het gedeelte wat je wil hebben eruit slopen.
Het is een externe site en het is voor een klant dus dat zou geen probleem zijn
Zou je misschien klein voorbeeld kunnen geven met CURL()
Extra info :
Het gaat om de div : <div class="content" style="width:700px">
Zou je misschien klein voorbeeld kunnen geven met CURL()
Extra info :
Het gaat om de div : <div class="content" style="width:700px">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "example.com");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
?>
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, "example.com");
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
?>
vervolgens zou in $output moeten zoeken naar een <div class="content" met preg_match(_all) bijv.
Geweldig ik denk dat dit me wel gaat lukken!
Bedankt!
Bedankt!
Graag gedaan en anders horen we het wel weer.
Als het een site van de klant betreft, en je daar ook toegang tot hebt, zijn hiervoor makkelijkere manieren te bedenken zoals de data die je nodig hebt doorgeven als json string o.i.d.
Toevoeging op 04/04/2014 11:02:59:
Misschien wat overkill voor wat jij wil, maar met domDocument zou het ook kunnen
Nou krijg je alle div's terug. Als je wat specifieker wil zijn kun je het volgende gebruiken i.p.v. regel 36
Als het een site van de klant betreft, en je daar ook toegang tot hebt, zijn hiervoor makkelijkere manieren te bedenken zoals de data die je nodig hebt doorgeven als json string o.i.d.
Toevoeging op 04/04/2014 11:02:59:
Misschien wat overkill voor wat jij wil, maar met domDocument zou het ook kunnen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
function getTextBetweenTags($tag, $url, $strict=0)
{
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$html = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
if($strict==1)
{
@$dom->loadXML($html);
}
else
{
@$dom->loadHTML($html);
}
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the tag by its tag name ***/
$content = $dom->getElementsByTagname($tag);
/*** the array to return ***/
$out = array();
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[] = $item->nodeValue;
}
/*** return the results ***/
return $out;
}
$content = getTextBetweenTags('div', 'http://www.phphulp.nl/php/forum/topic/function-externe-div-laden/94425/1/');
echo $content[23]; // Hallo, Ik probeer in een iframe een bepaald gedeelte van de site te laden (content div) Hoe zou ik dat het beste kunnen doen of met welke taal is dat het handigste ik dacht zelf aan een php function :) De iframe word weergegeven op een facebook app (WooBox) Alvast bedankt!
?>
function getTextBetweenTags($tag, $url, $strict=0)
{
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$html = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
if($strict==1)
{
@$dom->loadXML($html);
}
else
{
@$dom->loadHTML($html);
}
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the tag by its tag name ***/
$content = $dom->getElementsByTagname($tag);
/*** the array to return ***/
$out = array();
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[] = $item->nodeValue;
}
/*** return the results ***/
return $out;
}
$content = getTextBetweenTags('div', 'http://www.phphulp.nl/php/forum/topic/function-externe-div-laden/94425/1/');
echo $content[23]; // Hallo, Ik probeer in een iframe een bepaald gedeelte van de site te laden (content div) Hoe zou ik dat het beste kunnen doen of met welke taal is dat het handigste ik dacht zelf aan een php function :) De iframe word weergegeven op een facebook app (WooBox) Alvast bedankt!
?>
Nou krijg je alle div's terug. Als je wat specifieker wil zijn kun je het volgende gebruiken i.p.v. regel 36
Code (php)
1
2
3
4
2
3
4
<?php
$xpath = new DOMXPath($dom);
$content = $xpath->query('//div[@class="content"]');
?>
$xpath = new DOMXPath($dom);
$content = $xpath->query('//div[@class="content"]');
?>
Gewijzigd op 04/04/2014 11:21:01 door Michael -
Ik heb hem nu ingeladen maar hij pakt alleen de tekst? ik moet de hele div hebben met background hoe doe ik dat ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
function getTextBetweenTags($tag, $url, $strict=0)
{
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$html = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
if($strict==1)
{
@$dom->loadXML($html);
}
else
{
@$dom->loadHTML($html);
}
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the tag by its tag name ***/
$xpath = new DOMXPath($dom);
$content = $xpath->query('//div[@class="content"]');
/*** the array to return ***/
$out = array();
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[] = $item->nodeValue;
}
/*** return the results ***/
return $out;
}
$content = getTextBetweenTags('div', 'http://);
echo $content[0];
?>
function getTextBetweenTags($tag, $url, $strict=0)
{
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$html = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
/*** a new dom object ***/
$dom = new domDocument;
/*** load the html into the object ***/
if($strict==1)
{
@$dom->loadXML($html);
}
else
{
@$dom->loadHTML($html);
}
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** the tag by its tag name ***/
$xpath = new DOMXPath($dom);
$content = $xpath->query('//div[@class="content"]');
/*** the array to return ***/
$out = array();
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[] = $item->nodeValue;
}
/*** return the results ***/
return $out;
}
$content = getTextBetweenTags('div', 'http://);
echo $content[0];
?>
Gewijzigd op 08/04/2014 11:55:50 door Vincent Post
Ah, ik begreep niet dat je de HTML ook wou :) Excuses
Vervang regel 44 door $out[] = $dom->saveHTML($item);
Vervang regel 44 door $out[] = $dom->saveHTML($item);
Geweldig nu pakt hij de html ook moet ik nu alleen de css link even toevoegen en dan zou hij moeten werken?
want hij weergeeft de images nu niet.
Bedankt! ;)
want hij weergeeft de images nu niet.
Bedankt! ;)
Dat komt omdat je images niet kunnen worden gevonden omdat de paden niet volledig zijn. Hij zoekt de images nu dus op de plek waar je het script uitvoert. Zelfde geldt voor de CSS.
Je zou dit kunnen oplossen door <base href="http://www.***.nl/" /> toe te voegen in je head.
Edit: Let er wel op dat dan ALLES wat na base komt, wordt opgehaald vanaf die website. Dus ook je eigen plaatjes. Je eigen CSS zou je boven de base kunnen plaatsen.
Dan zou je dit moeten krijgen.
Edit2: De base href zou moeten zijn
<base href="http://www.***.nl/ik-zoek-een-koopwoning/" />
Anders werken de 'meer info' links ook niet meer.
Je zou dit kunnen oplossen door <base href="http://www.***.nl/" /> toe te voegen in je head.
Edit: Let er wel op dat dan ALLES wat na base komt, wordt opgehaald vanaf die website. Dus ook je eigen plaatjes. Je eigen CSS zou je boven de base kunnen plaatsen.
Dan zou je dit moeten krijgen.
Edit2: De base href zou moeten zijn
<base href="http://www.***.nl/ik-zoek-een-koopwoning/" />
Anders werken de 'meer info' links ook niet meer.
Gewijzigd op 08/04/2014 11:43:14 door Michael -
Geweldig super bedankt! hiermee kan ik verder ;)
Graag gedaan en succes!




