HTML -> RSS (XML) dynamiskt med php. Hur?

Tråden skapades och har fått 22 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Karlstad
  • 2006-06-08 09:28

Jag har t.ex. ett skript som omvandlar xml till html.
Nu letar jag efter det omvända: Ett skript som dynamiskt gör om html till xml för en newsfeed. Har letat överallt men inte hittat nåt.
Tips, månne?

  • Medlem
  • Karlstad
  • 2006-06-08 09:33

Typiskt. Så fort jag startade den här tråden hittade jag nåt som verkar lovande....

Vad hittade du då?

  • Medlem
  • Karlstad
  • 2006-06-08 09:52
Ursprungligen av irrelogical:

Vad hittade du då?

Nä, det jag hittade verkade inte bra. Får leta vidare.

  • Medlem
  • Karlstad
  • 2006-06-08 10:19

Hittade en online service: http://www.wotzwot.com/rssxl.php

Jag har svårt att tro att du ska hitta något som gör om html till xml enligt rss-standarden. Oftast brukar rss-feeds komma direkt ur databas och formateras utan att gå omvägen via html.
HTML har ju ingen standard på samma sätt som rss, man kan ju lista saker i html lite som man själv vill t.ex. via tabeller eller div's.
Så mitt tips är att göra ett själv som blir olika för alla de sidor du ska hämta där du själv får klura ut hur du tar fram den relevanta infon via regexp med preg_match eller motsvarande.

  • Medlem
  • Piteå
  • 2006-06-08 11:51

Gör bara på samma sätt som när du hämtar ur databasen till htmlsidan. Du skriver all nödvändig xml-info högst upp, som encoding osv, och sen loopar du inläggen som hämtas från databasen och skriver ut det som xml istället.

  • Medlem
  • Karlstad
  • 2006-06-08 13:30

Det är så invecklat att förklara i detalj vad jag har för förutsättningar, så jag skippar det. Om jag istället frågar så här:
Hur gör man i php för att skriva om vissa taggar och ta bort andra?
Om jag t.ex. vill att en <h1> tag ska bli <title> och att all "överflödig" kod inte ska med, hur gör jag då? Jag har försökt luska ut detta genom att studera koden jag har som gör om en rss-feed till html, men jag är nog för trögfattad. Finns det nån tutorial för en newbie?

Det du enklast använder är reguljära uttryck (regular expressions) och en funktion som kan sök med dessa uttryck. Den funktion jag rekommenderar är preg_match() för sökningar och preg_replace() för ersättningar.

För att hitta allt inom <h1>text</h1> kan det reguljära uttrycket t.ex. ut såhär:

$text = 'lite text <h1>text</h1> lite mer text';
$search = '/<h1>(.*?)<\/h1>/i';

//För att söka
preg_match($search, $text, $matches);
print_r($matches);

//Nu skrivs alla träffar ut och i $matches[1] ligger den text du vill ha ut.

//För att ersätta
$newtext = preg_replace($search, '<title>$1</title>', $text);
print $newtext; 

Inte provkört det jag skrivit ovan, men det _borde_ fungera.
Läs mer om preg_replace och mer om reguljära uttryck

  • Medlem
  • Karlstad
  • 2006-06-08 14:04

orreborre,

Just det. Nåt sånt! Tack. Nu ska jag försöka klura ut hur jag tar kod från dokument 1, kör det genom "filtret" och skriver ut sidan 2 med resultatet så att användaren kan gå direkt till sidan 2.

Blir väl klar framåt jul eller nåt...

  • Medlem
  • Vallentuna
  • 2006-06-08 14:08

Tjänsten http://www.rsspect.com/ kanske gör vad du vill?

  • Medlem
  • Karlstad
  • 2006-06-08 16:47

malesca,

Tack f förslag.
Kolla in länken, skapade konto osv. Det var faktiskt mycket mer omständligt än sajten jag hittade tidigare: http://www.wotzwot.com/rssxl.php
Får väl nöja mig med en remote service så länge, men det skulle vara mycket mer elegant att ha en lösning på egen server så att användare inte fick en URL till andra.

Det låter som om du skulle kunna skriva en xslt converter, men det ska kanske skall vara xml som input när jag tänker efter...

Ursprungligen av LeBigMAC:

Det låter som om du skulle kunna skriva en xslt converter, men det ska kanske skall vara xml som input när jag tänker efter...

Om sidan är kodad i xhtml fungerar det bara fint att köra xslt eftersom det faktiskt är ren xml, men är det gamla html 4 så blir det stopp. Fast då är det ju bara att konvertera innehållet med tidy förstås...

Jag har en känsla av att det blir lättare att använda något system för publicering av nyheter (eller vad du nu ska ha det hela till) som har en inbyggd RSS-funktion än att försöka göra något sånt här.

  • Medlem
  • Karlstad
  • 2006-06-09 12:23

Jag kör den där servicen som "wotzwot" har så länge. Det funkar OK, även om länken till feeden kunde vara lite kortare och peka till min egen server. Nu lyder den:
http://www.wotzwot.com/rssxl.php?pageurl=http%3A%2F%2Fproformica.com%2Fnews%2Fvietnam_news.php&sf=&si=%3Cdt%3E&ei=%3C%2Fdd%3E&sd=&ed=&linkno=2&vcode=1747922124

...vilket är lite otympligt.

  • Medlem
  • Mölndal
  • 2006-06-09 13:09

Du kanske skulle försöka plocka ut (publicerings)datumet och lägga i ett <pubDate>-element (som man brukar göra med RSS). Så går det att sortera nyheterna ordentligt.

  • Medlem
  • Karlstad
  • 2006-06-09 17:47
Ursprungligen av memark:

Du kanske skulle försöka plocka ut (publicerings)datumet och lägga i ett <pubDate>-element (som man brukar göra med RSS). Så går det att sortera nyheterna ordentligt.

Ja. Kanske....:)

Tre år senare ...

Vilka gratisverktyg står till buds idag? Jag ska sätta en HTML till RSS-funktion i händerna på en kund och det ska vara enkelt och billigt. Det gäller en enstaka sida som en gång per vecka uppdateras.

Jag kollade runt lite och kom fram till det här.

1. RSSPECT - automatic and free RSS feeds for everyone.
Verkar funka men i gratisversionen måste man logga in och klicka refresh manuellt. Pro-versionen där man prenumererar har automatisk uppdatering.

2. RSS Wizard
Convert HTML to RSS and Create, Edit, and Publish RSS feeds

Ett shareware för Win som laddar ner html-filen och skapar en RSS-feed och laddar upp till FTP. Inte gratis men det handlar om 300 kr vid ett enstaka tillfälle så det är inget bekymmer. Här var kruxet dock att programmet måste vara startat hela tiden. Den har ingen bakgrundsfunktion typ en deamon i OS X. Det räcker att någon vid datorn stänger av programmet sen är det inte igång igen förrän efter nästa omstart.

Jag skulle kunna lägga en deamon på vår OS X server för en så här liten grej men jag hittar inget html till rss-program för mac alls.

Så vad har ni att komma med här då? Det var en riktig djungel att ta sig igenom det här för något som ser så simpelt ut i sin färdiga form.

Har bra erfarenhet av Feedage.com - Convert HTML 2 RSS

Bra Ztaafen! Den hade jag inte lyckats googla fram. Ska testa i helgen.

Tyvärr ingen lycka med Feedage. Den läser sidan och konverter till RSS helt efter eget tycke. Det fanns inte en enda inställning jag kunde göra.

Nu hittade jag de här tjänsterna som verkar lovande.

1. Dapper: The Data Mapper
Det här ser ut som en dröm. Man klickar direkt på sin inlästa webbsida grafiskt så att säga och den lägger till och tar bort objekt till feeden. Jag testade att göra en ändring på sidan och en stund senare var även feeden uppdaterad. Jag får läsa på lite för att hantera finlirandet.

2. Yahoo Pipes: Rewire the web
Det är verkar så stort och allmänt känt att det finns bara en anledning till att jag inte sett röken av den när jag googlat – den är en Yahoo-tjänst :). Man kan bygga vad sjutton som helst ser det ut som. Här en demo som visar hur Pipes hämtar iTunes topp-10-låtar och bygger en feed med motsvarande YouTube-länkar.
Nick Bradbury: YouTunes: An Example Yahoo! Pipe

1
Bevaka tråden