Permalänk
Medlem

PHP istället för javascript

Jag hämtar en feed på min hemsida med en kod som ser ut ungefär så här:

<script language="javascript" type="text/javascript" src="http://domain.com/feed.aspx?year=2008"></script>

Detta ger mig i webläsaren: 2010 | 2009 | 2008

Dock skulle jag istället vilja skriva in allting serverside så att även sökmotorer kan läsa feeden. För nu är det ju bara klienten som kan läsa det med javascript påslaget. Jag tänkte att CURL kunde vara min räddning så jag provade att putta ut samma URL och fick då:

document.write(' \n \n \n \n \n \n 2010 | \n \n \n \n 2009 | \n \n \n \n 2008 | \n \n \n \n \n \n \n');

Alltså en massa \n och andra saker. Jag har provat str_replace men får inte det att funka på "\n" av någon anledning. Däremot funkade det på bara t.ex "n", men den vill inte ta med slashen.. Så då provade jag istället funktionen stripslashes och då funkade det. Men då hade jag ju fortfarande kvar "document.write" och lite annat. Tänkte först att jag kanske skulle köra stripslashes + str_replace för att få bort allting men det känns inte rätt. Dels ser feeden väldigt olika ut så det kan hända att man missar något tecken någon annan gång och dels är jag rädd för att jag tar bort för mycket.. T.ex en slash då det faktiskt ska vara en slash...

Därför undrar jag nu istället hur ni skulle ha gjort? Jag är nybörjare på PHP så det kanske t.o.m finns en färdig funktion för att läsa in allt detta? Det kanske inte är CURL jag ska använda? Javascriptet formaterar ju allt automatiskt utan massa extra replace så det kanske finns någon färdig php funktion också?

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem
Permalänk
Medlem
Skrivet av hamre:

Nope, den verkar ge samma som curl. Alltså framför allt en massa \n

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem
Skrivet av spanXen:

Nope, den verkar ge samma som curl. Alltså framför allt en massa \n

$data = file_get_contents('http://domain.com/feed.aspx?year=2008'); // Du bör använda cURL istället, detta fungerar inte på alla PHP-installationer och kan vara en säkerhetsrisk, se http://se.php.net/manual/en/filesystem.configuration.php#ini.... för mer information echo str_replace(Array('\n',"document.write('","');"), Array('','',''), $data);

Permalänk
Medlem
Skrivet av You:

$data = file_get_contents('http://domain.com/feed.aspx?year=2008'); // Du bör använda cURL istället, detta fungerar inte på alla PHP-installationer och kan vara en säkerhetsrisk, se http://se.php.net/manual/en/filesystem.configuration.php#ini.... för mer information echo str_replace(Array('\n',"document.write('","');"), Array('','',''), $data);

Verkar ju funka riktigt bra!! Tack så jättemycket =D

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem
Skrivet av spanXen:

Jag hämtar en feed på min hemsida med en kod som ser ut ungefär så här:
...
Alltså en massa \n och andra saker. Jag har provat str_replace men får inte det att funka på "\n" av någon anledning. Däremot funkade det på bara t.ex "n", men den vill inte ta med slashen..

Att det inte fungerade med "\n" är för att PHP skiljer på " och ' (dubbel- och enkelcitationstecken); en sträng som omges av dubbelcitationstecken expanderas direkt, så \n blir exempelvis ett radbryte och $foo infogar variabeln foo. Enkelcitationstecken används för att kringgå detta, så 'Hello\nWorld!' blir verkligen Hello\nWorld!

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Att det inte fungerade med "\n" är för att PHP skiljer på " och ' (dubbel- och enkelcitationstecken); en sträng som omges av dubbelcitationstecken expanderas direkt, så \n blir exempelvis ett radbryte och $foo infogar variabeln foo. Enkelcitationstecken används för att kringgå detta, så 'Hello\nWorld!' blir verkligen Hello\nWorld!

Aha, tackar

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem

Egentligen ska andra raden i min kod nog se ut så här:

echo str_replace(Array('\n',"document.write('","');"), Array("\n",'',''), $data);

Då ger den nämligen exakt samma output som javascriptet (typ).

Permalänk
Medlem
Skrivet av You:

Egentligen ska andra raden i min kod nog se ut så här:

echo str_replace(Array('\n',"document.write('","');"), Array("\n",'',''), $data);

Då ger den nämligen exakt samma output som javascriptet (typ).

Hur kan jag göra en str_replace för att ta bort t.ex <strong>Text</strong>

Den ska alltså ta bort <strong> taggarna men också texten i mellan som är dynamisk och ändrar sig så det behövs någon slags wildcard

Visa signatur

It's nice to be important but it's more important to be nice. Posse!

Permalänk
Medlem
Skrivet av spanXen:

Hur kan jag göra en str_replace för att ta bort t.ex <strong>Text</strong>

Den ska alltså ta bort <strong> taggarna men också texten i mellan som är dynamisk och ändrar sig så det behövs någon slags wildcard

Använd regular expressions:

preg_replace('/<strong>(.*)<\/strong>/', '', $data);

Permalänk
Medlem
Skrivet av You:

Använd regular expressions:

preg_replace('/<strong>(.*)<\/strong>/', '', $data);

Nu är jag kanske petig, men är inte capture group meningslöst?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Inaktiv
Skrivet av You:

Använd regular expressions:

preg_replace('/<strong>(.*)<\/strong>/', '', $data);

strip_tags kan annars fungera, om det skulle vara flera html/php taggar som skall bort.

Permalänk
Medlem
Skrivet av Teknocide:

Nu är jag kanske petig, men är inte capture group meningslöst?

Jo