[php]Regular expressions, ik kom er maar niet uit.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • yootje
  • Registratie: December 2002
  • Laatst online: 11-07 11:03
Ik wil graag uit een XML-bestand (RSS-feed) alle overbodige tags halen, dus ik wil het volgende doen:

Title en description moeten blijven, de rest moet weg.

Nu had ik bedacht dat ik <title> en <desciropn eerst gewoon wegfilter en er "gekteken"dit is de titel"gekteken2" en "gekteken3"hier komt de description"gekteken4" van maak. Vervolgens filter ik alle andere tags, inclusief inhoud weg.

Ik moet dus het volgende hebben:

<blaat>blaat</blaat> moet "" zijn, waarbij blaat elk mogelijk teken kan zijn. Nu heb ik dit geprobeerd met eregi_replace, met preg_replace, alle mogelijke combinaties, ik heb tutorials doorgelezen, maar ik kom er niet uit. Kan iemand mij hierbij helpen?

Alvast bedankt :)

Acties:
  • 0 Henk 'm!

Verwijderd

Kijk 's naar XSLT... Dat is geknipt voor dit soort dingen.

Acties:
  • 0 Henk 'm!

  • yootje
  • Registratie: December 2002
  • Laatst online: 11-07 11:03
Ik moet niet alleen het uiterlijk aanpassen, ook de code zelf.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Met een XSL transformatie kun je meer dan alleen HTML genereren hoor :) Wat mijn voorganger bedoelt is dat je de RSS XML met een XSL stylesheet transformeert naar een andere XML die je vervolgens verder verwerkt met je PHP of wat je er ook mee wilde doen.

Misschien kun je wel een stapje overslaan en met een XSL gelijk XHTML genereren, maar dat is afhankelijk van wat je ermee wilt doen.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • yootje
  • Registratie: December 2002
  • Laatst online: 11-07 11:03
Als ik zoiets doe:

code:
1
$file = eregi_replace('(<link>)(.*)(</link>)', '', $file);


Geeft hij het bestand weer tot de eerste <link> en daarna niets meer, waarom is dat?

Acties:
  • 0 Henk 'm!

  • yootje
  • Registratie: December 2002
  • Laatst online: 11-07 11:03
Gerco schreef op vrijdag 01 april 2005 @ 07:42:
Met een XSL transformatie kun je meer dan alleen HTML genereren hoor :) Wat mijn voorganger bedoelt is dat je de RSS XML met een XSL stylesheet transformeert naar een andere XML die je vervolgens verder verwerkt met je PHP of wat je er ook mee wilde doen.

Misschien kun je wel een stapje overslaan en met een XSL gelijk XHTML genereren, maar dat is afhankelijk van wat je ermee wilt doen.
Ik wil de titles en descriptions, en alleen de titles en descriptions :P, in een plat tekstbestand oslaan.

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

yootje schreef op vrijdag 01 april 2005 @ 07:56:
[...]Ik wil de titles en descriptions, en alleen de titles en descriptions :P, in een plat tekstbestand oslaan.
Ook geen probleem, niemand zegt dat de output van een XSL StyleSheet ook XML moet zijn :)
code:
1
2
3
4
5
6
7
8
<xsl:stylesheet ...>
  <xsl:output method="text"/>
  <xsl:template match="rssitem">
    <xsl:value-of select="title"/>
    <xsl:text>;</xsl:text>
    <xsl:value-of select="description"/>
  </xsl:template>
</xsl:stylesheet>

Ik heb geen idee hoe een rss XML eruit ziet, dus vandaar even de pseudotag "rssitem".

[ Voor 33% gewijzigd door Gerco op 01-04-2005 08:25 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

yootje schreef op vrijdag 01 april 2005 @ 07:55:
Als ik zoiets doe:

code:
1
$file = eregi_replace('(<link>)(.*)(</link>)', '', $file);


Geeft hij het bestand weer tot de eerste <link> en daarna niets meer, waarom is dat?
Omdat je expressie greedy is?
PHP:
1
$file = preg_replace("#<link>(.*)</link>#ui", '', $file);

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1