|
| "Grabbe" HTTP Headers fra vilkårlig side? Fra : Ace |
Dato : 19-04-10 09:11 |
|
Hejsa
Jeg sidder og sysler lidt med en side, hvor kan skal kunne
indtaste en URL i et input-felt i en formular, som så submittes
til en php-side som skal "grabbe" HTTP Headers fra den side hvis
URL man har tastet. Helst så skulle php-siden også gerne kunne
frasortere alt i HTTP Headers, som eksempelvis ikke starter med
" http://v" og så echo'e det som et link (<a
href=" http://vsomethingsomething">Something).. kan dette lade
sig gøre, og så fald, hvordan ville et sådan PHP-script evt. se
ud?
Venligst
Ace
--
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
| |
Martin (19-04-2010)
| Kommentar Fra : Martin |
Dato : 19-04-10 14:37 |
|
On 19-04-2010 10:10, Ace wrote:
> Hejsa
>
> Jeg sidder og sysler lidt med en side, hvor kan skal kunne
> indtaste en URL i et input-felt i en formular, som så submittes
> til en php-side som skal "grabbe" HTTP Headers fra den side hvis
> URL man har tastet. Helst så skulle php-siden også gerne kunne
> frasortere alt i HTTP Headers, som eksempelvis ikke starter med
> " http://v" og så echo'e det som et link (<a
> href=" http://vsomethingsomething">Something).. kan dette lade
> sig gøre, og så fald, hvordan ville et sådan PHP-script evt. se
> ud?
HTTP headers har altså ikke links - det man får smidt tilbage er fx.
HTTP/1.1 200 OK
Date: Mon, 19 Apr 2010 13:35:50 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie:
PREF=ID=7a77d9220469ac68:TM=1271684150:LM=1271684150:S=Isz-rTt7IvVuvkLg;
expires=Wed, 18-Apr-2012 13:35:50 GMT; path=/; domain=.google.dk
Set-Cookie:
NID=33=Kq-Z7dZNzkrj7T5ldRuC2UQ94v__Hs_B4VmQGl1VErNd6xpm12exjUkwQmeVILy9PqlypO0GgwUE5eB1IBCTnmRyi4MLzcb9z_u--8x0XtWuGbAX4ta9oks12Q_PPpeY;
expires=Tue, 19-Oct-2010 13:35:50 GMT; path=/; domain=.google.dk; HttpOnly
Server: gws
Transfer-Encoding: chunked
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, " www.google.dk/");
curl_setopt($ch, CURLOPT_HEADER, 1);
$output = curl_exec($ch);
curl_close($ch);
?>
Er det HTML headers du tænker på?
Så er det bare at hente siden med fopen fx. også smide HTML siden ind i
simplexml så kan du hive <head> ud via den
| |
Ace (21-04-2010)
| Kommentar Fra : Ace |
Dato : 21-04-10 16:59 |
|
Martin wrote:
> Er det HTML headers du tænker på?
Nej det var godt nok HTTP Headers jeg tænkte på. Men troede at det man fik tilbage, ville være en liste over de requests der laves fra den
pågældende side til serveren. Ligesom plugin'et til FireFox "Live HTTP Headers" gør. Min fejl :)
Anyways, jeg har valgt at gå en anden vej med mit lille projekt nu. Men det kræver dog at jeg får lidt hjælp til at emplementere str_replace
i følgende PHP-script.
<?php
$url = $_REQUEST['url'];
$dom = new DomDocument();
$dom->loadHTMLFile($url);
$song = $dom->getElementsByTagName('script');
print $song->item(10)->textContent;
?>
Scriptet her, er i stand til, at hente tekstindhold fra et specifikt html-tag, fra en vilkårlig side. Samtidig har jeg dog også brug for at
det kan "finde og erstatte" udvalgte tegn fra det indhold som det henter. Desværre er jeg langt fra en PHP-Wiz, og er derfor ikke klar over
hvordan man bærer sig ad med at tilføje scriptet en str_replace-egenskab. Håber en venlig sjæl vil være mig behjælpelig med dette.
Venligst
Ace
--
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
| |
Chano Andersen (21-04-2010)
| Kommentar Fra : Chano Andersen |
Dato : 21-04-10 19:40 |
|
Den 21-04-2010 17:58, Ace skrev:
> Scriptet her, er i stand til, at hente tekstindhold fra et specifikt html-tag, fra en vilkårlig side. Samtidig har jeg dog også brug for at
> det kan "finde og erstatte" udvalgte tegn fra det indhold som det henter. Desværre er jeg langt fra en PHP-Wiz, og er derfor ikke klar over
Hvis du har en hel liste af erstatninger, vil det nemmeste nok være at
kigge på strtr(). Den tager et array som parameter, og vil ikke lave
nogen dobbelt erstatninger (F.eks. du søger efter a og erstatter med b,
derefter søger du på b og erstatter med c, det giver i praksis
resultatet at a er blevet til c.)
Du benytter strtr() sådan her:
<?php
$originalstring = "The quick brown fox, jumps over the lazy dog.";
$replacements = array(
"quick" => "slow",
"fox" => "dog",
"dog" => "fox",
"lazy" => "crazy");
echo strtr($originalstring,$replacements);
?>
Resultatet af ovenstående vil blive følgenden linje:
The slow brown dog, jumps over the crazy fox.
Det skulle til fulde løse simple replacements. Skal du lave mere
avancerede erstatninger, f.eks. fjerne HTML/XML tags, eller andet sjovt,
så skal du kigge på regexp funktionerne, men hvis man ingen erfaring har
med dem, er indlæringskurven ret stejl.
- Chano Andersen
| |
Ace (21-04-2010)
| Kommentar Fra : Ace |
Dato : 21-04-10 21:57 |
|
Chano Andersen wrote:
> <?php
> $originalstring = "The quick brown fox, jumps over the lazy dog.";
>
> $replacements = array(
> "quick" => "slow",
> "fox" => "dog",
> "dog" => "fox",
> "lazy" => "crazy");
>
> echo strtr($originalstring,$replacements);
> ?>
Okay, tak for det Chano :) Men er det ikke muligt, at lave noget i retningen af dette?:
<?php
$url = $_REQUEST['url'];
$dom = new DomDocument();
$dom->loadHTMLFile($url);
$data = $dom->getElementsByTagName('script');
$data = str_replace('"', '', $data);
print $data->item(10)->textContent;
?>
.. str_replace virker desværre ikke i ovenstående script, men kan man ikke gøre noget lignende dét?
Venligst
Ace
--
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
| |
Chano Andersen (21-04-2010)
| Kommentar Fra : Chano Andersen |
Dato : 21-04-10 22:11 |
|
Den 21-04-2010 22:57, Ace skrev:
> <?php
> $url = $_REQUEST['url'];
> $dom = new DomDocument();
> $dom->loadHTMLFile($url);
> $data = $dom->getElementsByTagName('script');
> $data = str_replace('"', '', $data);
> print $data->item(10)->textContent;
> ?>
> .. str_replace virker desværre ikke i ovenstående script, men kan man ikke gøre noget lignende dét?
Nej, for $data er IKKE en string.. Du er nødt til at lave erstatningen,
når du trækker data ud af dit DomDocument objekt...
Løsningen ville altså være at gøre sådan her:
<?php
$url = $_REQUEST['url'];
$dom = new DomDocument();
$dom->loadHTMLFile($url);
$data = $dom->getElementsByTagName('script');
print str_replace('"', '', $data->item(10)->textContent);
?>
Ovenstående burde virke, men uden dit input kan jeg ikke selv teste det.
- Chano Andersen
| |
Ace (22-04-2010)
| Kommentar Fra : Ace |
Dato : 22-04-10 18:15 |
|
Chano Andersen wrote:
>
> Nej, for $data er IKKE en string.. Du er nødt til at lave erstatningen,
> når du trækker data ud af dit DomDocument objekt...
>
> Løsningen ville altså være at gøre sådan her:
>
> <?php
> $url = $_REQUEST['url'];
> $dom = new DomDocument();
> $dom->loadHTMLFile($url);
> $data = $dom->getElementsByTagName('script');
> print str_replace('"', '', $data->item(10)->textContent);
> ?>
>
> Ovenstående burde virke, men uden dit input kan jeg ikke selv teste det.
Tusind tak Chano, det virker perfekt :) Er det dog muligt, at lave en array med str_replace i samme
script, så man kan "ændre" mere end 1 ting i string'en?
Forresten, kan det lade sig gøre, at ét php-script (som det pågældende) kan "grabbe" indhold fra 2,
eller flere, forskellige url'er og samtidig være i stand til at lave en str_replace array til hver af
string'ene fra hver url? (ved ikke om det overhovedet var forståeligt)
Venligst
Ace
--
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
| |
Bertel Lund Hansen (22-04-2010)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 22-04-10 18:27 |
|
Ace skrev:
> Tusind tak Chano, det virker perfekt :) Er det dog muligt, at lave en array med str_replace i samme
> script, så man kan "ændre" mere end 1 ting i string'en?
str_replace() kan tage to arrays som parametre. Eksempel:
$remove = array('a', 'b', 'c');
$insert = array('d', 'e', 'f');
$datastring = 'abcabcabc";
$newstring = str_replace($remove, $insert, $datastring);
Så er $newstring == 'defdefdef';
http://dk.php.net/manual/en/function.str-replace.php
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
| |
Martin (22-04-2010)
| Kommentar Fra : Martin |
Dato : 22-04-10 18:51 |
|
On 22-04-2010 19:27, Bertel Lund Hansen wrote:
> Ace skrev:
>
>> Tusind tak Chano, det virker perfekt :) Er det dog muligt, at lave en array med str_replace i samme
>> script, så man kan "ændre" mere end 1 ting i string'en?
>
> str_replace() kan tage to arrays som parametre. Eksempel:
>
> $remove = array('a', 'b', 'c');
> $insert = array('d', 'e', 'f');
> $datastring = 'abcabcabc";
> $newstring = str_replace($remove, $insert, $datastring);
Eller
$remove = array('foo' => 'bar', 'a' => 'b', 'c' => 'd');
$newstring = str_replace(array_keys($remove), array_values($remove), $data);
| |
Chano Andersen (22-04-2010)
| Kommentar Fra : Chano Andersen |
Dato : 22-04-10 21:30 |
|
Den 22-04-2010 19:27, Bertel Lund Hansen skrev:
> Ace skrev:
>
>> Tusind tak Chano, det virker perfekt :) Er det dog muligt, at lave en array med str_replace i samme
>> script, så man kan "ændre" mere end 1 ting i string'en?
>
> str_replace() kan tage to arrays som parametre. Eksempel:
>
> http://dk.php.net/manual/en/function.str-replace.php
>
Ja, men bemærk denne:
"If search or replace are arrays, their elements are processed first to
last."
Det betyder altså, at hvis man har erstatninger ala
<?php
$search = array("a","b","c","d");
$replace = array("b","c","d","e");
$originalString = "abcdabcdabcdabcd";
echo str_replace($search,$replace,$originalString)."\n";
echo strtr($originalString,array_combine($search,$replace))."\n";
?>
Ovenstående giver følgende output:
eeeeeeeeeeeeeeee
bcdebcdebcdebcde
Det er ikke svært at se, hvor galt det kan gå med str_replace...
- Chano Andersen
| |
|
|