/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
php parse og ændring af links
Fra : Michael Tillgaard


Dato : 09-08-11 05:52

Jeg henter en htm side fra en server ex.
http://205.234.159.146/205.234.159.146/pbsvss.htm . Url'en får
jeg ved $_REQUEST[url]. Denne side har en fast opbygning linje
for linje ex. <p> <a href=pb000125.htm target=_blank>000125</a>
"surfnsam" (W) GUID=a5b74520eb857c19bd60a54d994da66e(-)
[2011.08.05 23:22:29]
Jeg vil nu i første omgang gerne ændre linket så der kommer til
at stå: <a
href=http://205.234.159.146/205.234.159.146/pb000125.htm
target=_pbssshots>
Det skal selvfølgelig ændres i alle linjer på denne side.

Jeg henter htm-siden over på min server ved nedenstående,men kan
så ikke rigtog komme videre. Jeg har prøvet forskellige andre
metoder at parse på men der får jeg fejlmeldinger:
<?php

$curl_handle=curl_init();
//This is the URL you would like the content grabbed from
curl_setopt($curl_handle,CURLOPT_URL,$_REQUEST[url]);
//This is the amount of time in seconds until it times out, this
is useful if the server you are requesting data from is down.
This way you can offer a "sorry page"
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);

curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
//This Keeps everything running smoothly
curl_close($curl_handle);

// Change the message bellow as you wish, please keep in mind you
must have your message within the " " Quotes.
if (empty($buffer))
{
print "Sorry, site currently unavailable, please check back
later.";
}
else
{
print $buffer;
}
?>
Gerne skåret ud i pap. Da det er mit første php-projekt :)
Hilsen Michael

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Michael Tillgaard (09-08-2011)
Kommentar
Fra : Michael Tillgaard


Dato : 09-08-11 06:52

> Jeg vil nu i første omgang gerne ændre linket så der kommer til
> at stå: <a
> href=http://205.234.159.146/205.234.159.146/pb000125.htm
> target=_pbssshots>
Det skal være: <a
href=http://205.234.159.146/205.234.159.146/pb000125.htm
target=pbssshots>

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (09-08-2011)
Kommentar
Fra : Stig Johansen


Dato : 09-08-11 11:06

Michael Tillgaard wrote:

> Jeg henter en htm side fra en server ex.
> http://205.234.159.146/205.234.159.146/pbsvss.htm .

Hvis du har kontrol over denne side, så prøv at få det leveret som XML,
eller i det mindste med korrekt afsluttede tags, så du selv kan loade det
ind i en XML parser.

Det er langt mindre kompliceret at traverse et XML dokument, fremfor at
'dissekere' en ustruktureret streng.

--
Med venlig hilsen
Stig Johansen

Michael (09-08-2011)
Kommentar
Fra : Michael


Dato : 09-08-11 12:30

Stig Johansen wrote in dk.edb.internet.webdesign.serverside.php:
>
> Hvis du har kontrol over denne side, så prøv at få det leveret som XML,
> eller i det mindste med korrekt afsluttede tags, så du selv kan loade
det
> ind i en XML parser.

Ups. Jeg har som sådan ikke kontrol over siden. Kan du være mere konkret
omkring det med XML parser. Jeg har prøvet at google og prøvet forskellige
muligheder uden held :(
Er absolut nybegynder i php.


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Stig Johansen (10-08-2011)
Kommentar
Fra : Stig Johansen


Dato : 10-08-11 08:38

Michael wrote:

> Ups. Jeg har som sådan ikke kontrol over siden. Kan du være mere konkret
> omkring det med XML parser. Jeg har prøvet at google og prøvet forskellige
> muligheder uden held :(
> Er absolut nybegynder i php.

Hvis du ikke har kontrol over siden kan det være ligemeget, for den er fyld
med fejl, bla. uafsluttede <p> tags.

XML (Dom) giver et væld af muligheder for at 'manipulere' XML'et på en smuk
og overskueligt måde, i modsætning til RegEx.

http://php.net/manual/en/book.domxml.php

Det smukke er, at DOM'en er standardiseret, så de samme properties og metode
kan bruges i et hvilketsomhelst sprog på en hvilkensomhelst platform (hvor
XML Dom) er understøttet.

--
Med venlig hilsen
Stig Johansen

Martin Larsen (10-08-2011)
Kommentar
Fra : Martin Larsen


Dato : 10-08-11 08:44

Stig Johansen wrote:

> Hvis du ikke har kontrol over siden kan det være ligemeget, for den er fyld
> med fejl, bla. uafsluttede<p> tags.

> XML (Dom) giver et væld af muligheder for at 'manipulere' XML'et på en smuk
> og overskueligt måde, i modsætning til RegEx.

DOM kan dog også have store problemer med opmarkeringsfejl. Derfor er
det uanset metoden en god ide at køre html'en gennem Tidy.

Stig Johansen (10-08-2011)
Kommentar
Fra : Stig Johansen


Dato : 10-08-11 09:55

Martin Larsen wrote:

> DOM kan dog også have store problemer med opmarkeringsfejl. Derfor er
> det uanset metoden en god ide at køre html'en gennem Tidy.

Ja, det var derfor jeg skrev at det skulle være valid XML, da det ellers
ikke kan indlæses.

--
Med venlig hilsen
Stig Johansen

Martin (09-08-2011)
Kommentar
Fra : Martin


Dato : 09-08-11 15:33

On 09-08-2011 06:52, Michael Tillgaard wrote:
> Jeg henter en htm side fra en server ex.
> http://205.234.159.146/205.234.159.146/pbsvss.htm . Url'en får
> jeg ved $_REQUEST[url]. Denne side har en fast opbygning linje
> for linje ex.<p> <a href=pb000125.htm target=_blank>000125</a>
> "surfnsam" (W) GUID=a5b74520eb857c19bd60a54d994da66e(-)
> [2011.08.05 23:22:29]
> Jeg vil nu i første omgang gerne ændre linket så der kommer til
> at stå:<a
> href=http://205.234.159.146/205.234.159.146/pb000125.htm
> target=_pbssshots>
> Det skal selvfølgelig ændres i alle linjer på denne side.
>
> Jeg henter htm-siden over på min server ved nedenstående,men kan
> så ikke rigtog komme videre. Jeg har prøvet forskellige andre
> metoder at parse på men der får jeg fejlmeldinger:

Der er ingen grund til at smide det hele igennem CURL - bare en alm.
file_get_contents er ligeså god.

Hvis ikke file_get_contents virker, så kan du prøve med
http://www.php.net/manual/en/function.stream-get-contents.php

<?php
$file = 'http://205.234.159.146/205.234.159.146/pbsvss.htm';
$data = file_get_contents($file);
// Vi henter alt data

$url = 'http://205.234.159.146/205.234.159.146/';

$search = '<a href=(.*?)\.htm (.*?)>';
// Dette søger vi efter - (.*?) = betyder sådan set bare ALT
$replace = '<a href="' . $url . '$1' . '.htm" target="_blank">';
// Dette replacer vi med $1 = Den første (.*?) i vores search og $2
ville så være nummer, men den behøver vi ikke

echo preg_replace('@' . $search . '@si', $replace, $data);

perl regular expressions kan være langhåret, men når man først lære det,
så kan det bruges til undelig mange ting
http://perldoc.perl.org/perlre.html

Michael (09-08-2011)
Kommentar
Fra : Michael


Dato : 09-08-11 16:09

> <?php
> $file = 'http://205.234.159.146/205.234.159.146/pbsvss.htm';
> $data = file_get_contents($file);
> // Vi henter alt data
>
> $url = 'http://205.234.159.146/205.234.159.146/';
>
> $search = '<a href=(.*?)\.htm (.*?)>';
> // Dette søger vi efter - (.*?) = betyder sådan set bare ALT
> $replace = '<a href="' . $url . '$1' . '.htm" target="_blank">';
> // Dette replacer vi med $1 = Den første (.*?) i vores search og $2
> ville så være nummer, men den behøver vi ikke
>
> echo preg_replace('@' . $search . '@si', $replace, $data);
>
> perl regular expressions kan være langhåret, men når man først lære det,
> så kan det bruges til undelig mange ting
> http://perldoc.perl.org/perlre.html
Hej Martin. Det virker super fint! Jeg bøjer mig i støvet.
Nu mangler jeg bare at kunne indsætte ip'en med en request.
Dette virker ikke:
$file = 'http://$_REQUEST[url]/$_REQUEST[url]/pbsvss.htm';
$data = file_get_contents($file);
// Vi henter alt data

$url = 'http://$_REQUEST[url]/$_REQUEST[url]/';
Men hvad virker?
Vh Michael


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Michael Tillgaard (09-08-2011)
Kommentar
Fra : Michael Tillgaard


Dato : 09-08-11 16:57

Jeg ændrede på mit url request og fik det til at virke.
$file = $_REQUEST[url1];
$data = file_get_contents($file);
// Vi henter alt data

$url = $_REQUEST[url2];

Endnu engang tak til Martin


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Michael (09-08-2011)
Kommentar
Fra : Michael


Dato : 09-08-11 19:58

> $replace = '<a href="' . $url . '$1' . '.htm" target="_blank">';

Er stødt ind i et mystisk problem. Jeg har ændret target="pbssshot" der er
en iframe hvor linket skal åbne. Det går fint med første link. Andet link og
derefter åbner i nye vinduer. Kildekoden ser ellers fin ud med
target="pbssshot" i alle link og fejlen er ikke til at få øje på. Mystisk.
Vh. Michael

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407840
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste