Gå til innhold

PHP Fetch Text!


Anbefalte innlegg

Hei.

 

Nå har jeg drevet og rotet rundt på nett i søk etter en mulighet for og hente en Text, fra en internett side, og flytte denne over på en annen internett side. Disse 2 sidene er på forskjellige domener og servere. bare så det er sagt.

 

Jeg ønsker ikke at scriptet skal hente ut html kodene.. men bare teksten i <p> tagsene og <h> tagsene.

Men jeg kan ikke si jeg klarer og finne noe som får dette til og funke helt som det skal. har klart og få til en kode som henter hele siden med html tags, men da er jeg like langt da siden ser bokstavelig talt helt screwd.. :p

 

Så.. noen som har lyst og hjelpe meg litt med dette?

Kan godt poste den koden jeg har allerede, sånn at den kanskje kan modifiseres f.eks.

Si ifra.. og på forhånd! Takk til alle som hjelper! :D

 

I bow for a skill grater than mine! :p

Lenke til kommentar
Videoannonse
Annonse

Okay.. den funker desverre ikke.. hehe..

Tror det er litt fordi jeg og ikke klarte og forklare meg helt for hva jeg ønsker.. så! vi prøver igjen med no bilder og koder og en grundigere forklaring! :p

 

her er koden til mitt script:

 <?php
// Copyright (c) 2006, Simon Jansson <http://www.litewebsite.com> all rights reserved.
// License <http://litewebsite.com/license_BSD.html>

// NOTE: testing purpose (remove the line below after successful testing)
echo LiteHttp::getUrlContent('http://www.krystallkulen.no/?horoskop=4');



class LiteHttp{



	function __construct(){

	}// end of construct



	public static function getUrlContent($url){

			if( !extension_loaded('curl') ){
					die('You need to load/activate the cURL extension (http://www.php.net/cURL).');
			}

			// more cURL info at <http://www.php.net/cURL> and <http://curl.haxx.se/docs/features.html>
			$curlHandle = curl_init(); // init curl

			// options
			curl_setopt($curlHandle, CURLOPT_URL, $url); // set the url to fetch
			curl_setopt($curlHandle, CURLOPT_HEADER, 0); // set headers (0 = no headers in result)
			curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); // type of transfer (1 = to string)
			curl_setopt($curlHandle, CURLOPT_TIMEOUT, 10); // time to wait in seconds

			$content = curl_exec($curlHandle); // make the call

			curl_close($curlHandle); // close the connection

	return $content;
	}

}// end of class
?>

 

sånn ser den ut..

her er ett bilde av siden når den koden er activ:

test.jpg

 

Her er ett bilde av hvordan jeg ønsker det skal se ut med scriptet aktivt.(bilde er redigert i Photoshop!)

test2.jpg

 

så.. er ett lite puslespill.. men jeg klarer ikke helt og få det til og bli som jeg ønsker.. så håper noen kan noe om dette og har noe forslag på hva som vil virke..

Den siden som teksten skal bli hentet fra blir og forresten oppdatert hver natt.

Lenke til kommentar

Så lenge du ikke bare kopierer siden uten lov...

 

<pre><?php
function filter_empty_lines($var)
{
$var = trim($var);
return !empty($var);
}

if (preg_match_all('/<(h|p)[^>a-zA-Z]*>.*?<\/(h|p)\d?>/', $html, $matches)) {
$lines = $matches[0];
$lines = array_map('strip_tags', $lines);
$lines = array_filter($lines, 'filter_empty_lines');
echo implode("\n", $lines);
} else {
echo "No match\n";
}
?></pre>

Lenke til kommentar

Hei..

 

da skal jeg prøve den koden der gitt..

 

Nei jeg har full og holdent lov.. jeg som har laget den siden jeg skal hente fra, og vi har nattevakta her på jobben som oppdaterer horoskopet hver natt.. så det har jeg lov til.. ;)

 

Edit:

 

okay.. prøvd meg litt fram nå, men skjønner ikke helt om jeg skal erstatte den andre php koden, eller om jeg skal legge denne til. og hvordan jeg skal gjøre det..

 

Er ikke helt dreven på php enda.. driver og lærer.. så setter stor pris på all hjelp! ;)

Endret av SirLeon
Lenke til kommentar
okay.. prøvd meg litt fram nå, men skjønner ikke helt om jeg skal erstatte den andre php koden, eller om jeg skal legge denne til. og hvordan jeg skal gjøre det..

 

Er ikke helt dreven på php enda.. driver og lærer.. så setter stor pris på all hjelp! ;)

$html skal inneholde siden.

 

for en variant kan du bruke strip_tags i filter funksjonen

Lenke til kommentar

Hei igjen.

 

Nydelig.. nå funker den nesten optimalt! :D

 

Men.. problemet nå er at all teksten lander langt ut på siden.

Er det noen måte og få teksten tilbake sånn at den holder plasserer seg sånn som på siden som jeg lagde i photoshop i stede for at alt strekker seg langt utover og mesteparten av teksten kan man ikke lese?

 

Og så ser jeg at det blir mye krøll med æøå i teksten.. vet ikke om det er mulig og få rettet på dette eller ikke?

Men uten om det. Tusen takk for all hjelp. dette har hjulpet utrolig mye for en nybegynner på php! :D

Lenke til kommentar
Hei igjen.

 

Nydelig.. nå funker den nesten optimalt! :D

 

Men.. problemet nå er at all teksten lander langt ut på siden.

Er det noen måte og få teksten tilbake sånn at den holder plasserer seg sånn som på siden som jeg lagde i photoshop i stede for at alt strekker seg langt utover og mesteparten av teksten kan man ikke lese?

Husker ikke kordan det skulle se ut. Men nå er det bare enkel formatering som gjenstår.

Og så ser jeg at det blir mye krøll med æøå i teksten.. vet ikke om det er mulig og få rettet på dette eller ikke?

Plasser denne linjen i headeren.

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Må kanskje lagre filen som UTF-8.

Men uten om det. Tusen takk for all hjelp. dette har hjulpet utrolig mye for en nybegynner på php! :D

np :)

Lenke til kommentar

hvis du ser på de første innleggene mine her i posten så ser du bilde av hvordan jeg ønsker at det skal se ut.

hvis du vil så kan jeg godt poste ett bilde av hvordan det ser ut nå.

 

okay.. da prøver jeg og legge inn den metaen! :D

 

Hehe.. du skulle bare vist hvor takknemmelig jeg er! :D

Lenke til kommentar
Hehe.. ja sant det.

Men er det noen mulighet for og legge inn formateringer sånn at jeg kan legge inn avsnitt osv?

Linjene ligger i arrayet $lines som tekststrenger.

Du kan fx

echo '<p>', implode("</p><p>", $lines), '</p>';

eller

foreach ($lines as $line)

echo "<p>$line</p>";

Lenke til kommentar

Hei igjen.

 

ja jeg prøvde og få lagt inn de kodene. men det forrandret seg ikke stort. ble litt penere bare.. hehe..

 

Her er ett bilde av hvordan det ser ut nå:

forlange.jpg

 

Her er noe om hvordan jeg ønsker det skal se ut:

test2.jpg

 

Må bare få si at jeg setter så UTROLIG stor pris på alt du har hjulpet meg med hittil! :D

 

Ett spm.. hvis jeg har div taggen til der hvor infoen på den siden jeg skal hente info fra. kan man bruke dette skriptet sånn at den BARE henter det som er inne i den div taggen, sammen med den div taggens <p>/<br>/osv.. ?

Lenke til kommentar

Du kan også forsøke

<?php
$regex = '|(<h1>.*</span></p>)\s*?</div>\s*?</td>\s*?<td width="1%"> </td>|s';
$html = file_get_contents('http://www.krystallkulen.no/?horoskop=4');
if (preg_match($regex , $html, $matches)) {
echo strip_tags($matches[1],'<h1><p><table><tr><td>');
} else {
echo "No match\n";
}

Endret av OISNOT
Lenke til kommentar
  • 2 måneder senere...

Hei igjen.

 

OISNOT: Må bare si igjen.. Tusen takk for hjelpen med dette php scriptet. det funker som en drøm^^

 

Men. jeg har ett nytt lite problem/prosjekt.

Vi skal lage profiler til spåerene våres på samme side som jeg har det andre scripte på.

og jeg ønsker og bruke samme funksjon der og, at jeg henter personens profil tekst fra den ene siden til den andre.

 

Har prøvd og bruke det scriptet du har fikset til meg i henhold til horoskopet, prøvd og redigere det litt her og der, men får det ikke til og fungere. får bare no match og klarer ikke helt finne ut av hvorfor det ikke funker.

 

Scriptet der:

 

<?php
$regex = '|(<h1>.*</span></p>)\s*?</div>\s*?</td>\s*?<td width="1%"> </td>|s';
$html = file_get_contents('http://www.krystallkulen.no/?hjem&usr=136');
if (preg_match($regex , $html, $matches)) {
echo strip_tags($matches[1],'<h1><p><div><table><tr><td><strong><br>');
} else {
echo "No match\n";
}
?>

 

Og adressen til en av profilene jeg skal bruke er:

http://www.krystallkulen.no/?hjem&usr=136

 

Setter veldig stor pris på denne hjelpen.

 

Ha en fortsatt strålende dag! :D

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...