[REGEX] een string tussen tags uithalen.

Pagina: 1
Acties:

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:48
Ik wil tussen twee bekende tags, in mijn geval [menuelement] en [/menuelement], de tekst uit halen. Ik ben best een eind op weg, maar het laatste lukt me gewoon niet. Ik heb dit topic gevonden met precies hetzelfde probleem, er wordt echter geen oplossing geboden, dus probeer ik het.

Ik heb deze code:
PHP:
1
preg_match('/\\[menuelement\](.*?)\\[\/menuelement\]/',$layout['layout'],$tmp);


Echter krijg ik nu een lege array terug; probeer ik dit:
PHP:
1
preg_match('/(\\[menuelement\])?(\\[\/menuelement\])/',$layout['layout'],$tmp);


Dan krijg ik op positie 0 en 2 de tags terug en element 1 blijft leeg. Wat doe ik fout? Ik heb O'Reilly ook al bekeken, maar ik kan geen passende oplossing vinden. Het gaat me dus alleen maar om element #1.

"Chaos kan niet uit de hand lopen"


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Je eerste regexp klopt gewoon? :?
PHP:
1
2
3
4
5
6
7
8
9
10
11
<pre>
<?php

$text = 'tralalal blaat [menuelement]test[/menuelement] lalalal twiedel';

preg_match('/\\[menuelement\](.*?)\\[\/menuelement\]/i', $text, $matches);

print_r($matches);

?>
</pre>

Geeft gewoon netjes dit terug, zoals het hoort:
Array
(
    [0] => [menuelement]test[/menuelement]
    [1] => test
)

Wat werkt er niet dan? :?

'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.


  • storeman
  • Registratie: April 2004
  • Laatst online: 12:48
Ja, jouw voorbeeld werkt wel(het letterlijke voorbeeld). Ik begin te vermoeden dat het ligt aan wat er tussen de tags staat.

Dat is het volgende:
PHP:
1
2
3
4
5
6
7
[menuelement]
<a href="[link]">
<div id="menuelement" 
onMouseOver="this.style.backgroundColor='#667788'" 
onMouseOut="this.style.backgroundColor='#445566'">[title]</div>
</a>
[/menuelement]

[ Voor 17% gewijzigd door storeman op 15-12-2005 13:52 ]

"Chaos kan niet uit de hand lopen"


  • storeman
  • Registratie: April 2004
  • Laatst online: 12:48
Na wat experimenteren, blijkt regex moeite te hebben met de <a als ik deze alleen tussen de tags zet, gaat t niet goed :(

"Chaos kan niet uit de hand lopen"


  • WormLord
  • Registratie: September 2003
  • Laatst online: 30-03 16:26

WormLord

Devver

Ik denk dat het probleem hem meer zit in het feit dat er in de tekst regel-eindes staan. Voeg de pattern-modifier 's' maar eens toe.

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:48
Ja, dat scheelt ook. Dat was een nog niet ontdekt probleem. Echter is er nog steeds het probleem met html-tags. Moet ik convert html entities toepassen?

ik ga nog even wat proberen

"Chaos kan niet uit de hand lopen"


  • storeman
  • Registratie: April 2004
  • Laatst online: 12:48
Met het converteren van html entities behaal ik het gewenste resultaat, maar ik vind het niet echt een nette oplossing.

Ik zou zelf niet weten hoe ik dit op kan lossen. Ik laat het maar even zo, mochten er nog goede ideeen aangedragen worden, ga ik dat zeker proberen!

"Chaos kan niet uit de hand lopen"


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 21-04 13:13
Als je alleen de test wilt hebben, kun je strip_tags eroverheen halen?
Pagina: 1