eregi_replace vraag

Pagina: 1
Acties:

  • T020
  • Registratie: Juli 2007
  • Laatst online: 24-09 19:33
hoi mensen
ik heb een vraagje over de functie eregi_replace()
ik wil van een string de tekst vanaf '[ quote ]' tot en met '[ /quote ]' replacen met '...' , maar ik kom er niet achter hoe ik dit moet doen met eregi_replace() :?
ik heb nu:

$quoteMessage = eregi_replace('[ quote ]([A-Za-z0-9])[ /quote ]', '...', $message);

maar dat werkt niet. Kan een van jullie me vertellen hoe het wel moet?

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 18-11 00:56
Let op wat je hier doet: ([A-Za-z0-9]), dit matcht één enkel alfanumeriek teken. :)

Ik zou eens beginnen met een regex tutorial doorspitten, want wat jij wilt is wel te bereiken, maar niet zoals je nu doet.

Je kunt
code:
1
.*
gebruiken, dit matcht elk teken één of meerdere keren. Ook de string [/quote] wordt gematcht, of dat een probleem is, moet je zelf maar bepalen. :)

[ Voor 31% gewijzigd door Jaap-Jan op 18-06-2008 22:58 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • benoni
  • Registratie: November 2003
  • Niet online
Allereerst de volgende dingen:
- De normaal bedoelde brackets [ ] escapen \\[ \] anders hebben ze de speciale functie.
- Voor het tussenliggende gedeelte kun je het beste zoeken naar alles wat geen bracket is.
- Ik zou een willekeurig aantal spaties aangeven in de quote tags.

Dan wordt ie zo
code:
1
'\[\s*quote\s*\]([^\[]*)\[\s*/quote\s*\]'

denk ik (niet getest) ;)

[ Voor 2% gewijzigd door benoni op 18-06-2008 23:05 . Reden: Code tags, anders zijn m'n escape tekens eruit ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:43

crisp

Devver

Pixelated

Gebruik overigens liever de PCRE functies - die zijn sneller, binary-safe en uitgebreider qua syntax en mogelijkheden. Daarbij wordt support voor POSIX reguliere expressies in PHP6 gestopt.

Verder een tikje naar Programming

Intentionally left blank


  • T020
  • Registratie: Juli 2007
  • Laatst online: 24-09 19:33
allereerst bedankt voor jullie snelle reacties (geen tijd gehad om eerder online te komen vandaar de late reactie ;) )
ik kwam niet uit op een goede eregi_replace() , daarom heb ik er zelf maar een functie voor gemaakt die na strl_split alle waarden uit de array vergelijkt met '['.'q'.'u'.'o'.'t'.'e'.']' en '['.'/'.'q'.'u'.'o'.'t'.'e'.']' en dat en daartussen verwijdert.
Deze werkt nu in principe goed, behalve bij berichten die al een quote in zich hebben. Hier moet ik dan maar die functie wat op aanpassen
iig bedankt voor jullie hulp allemaal ! :)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:43

crisp

Devver

Pixelated

PCRE kan ook recursie, maar een goede tokeniser en een stack-based parser is vele malen beter..

Intentionally left blank

Pagina: 1