Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Regex hulp nodig. Gebruikersnamen uit string vissen

Pagina: 1
Acties:

  • Mooya
  • Registratie: November 2001
  • Laatst online: 23:07
Hallo,

Ik ben bezig met een reactieformulier voor een site.
Bij het invullen van het formulier kan je andere gebruikers noemen zodat die ook op de hoogte zijn.
Beetje net als Facebook. (in mijn voorbeeld tik je de @, en dan komt er een popup waar je de gebruiker kan selecteren)

Deze gebruiker komt dan als [@User1] in het bericht te staan, en dit moet dan op de achtergrond verwerkt worden.

Dus ik heb bijvoorbeeld de volgende code:
code:
1
$Content = "test test [@User1] test test [@User2] test";


Hoe haal ik hier nu de twee users uit?

Ik wil deze bijv in een Array hebben:
$Users[] = "User1";
$Users[] = "User2";

Ik kom er met regex niet verder mee..

  • HerrKauwer
  • Registratie: Augustus 2010
  • Laatst online: 21-11 13:15
split op spatie en pak daar de gebruikersnamen uit die met [@ beginnen?

  • storeman
  • Registratie: April 2004
  • Laatst online: 22-11 12:00
Dit is prima te doen met regex. Wat heb je al geprobeerd?

"Chaos kan niet uit de hand lopen"


  • Mooya
  • Registratie: November 2001
  • Laatst online: 23:07
@Herrkauwer, de Split functie is niet meer goed supported, dus die gebruik ik liever niet.. Misschien dat ik het met een explode nog wel kan doen.

@storeman, ik heb nog niks met regex gedaan, ik ga daar toch niet uitkomen. wellicht is het voor iemand met regex kennis super simpel om dit even op te zetten O-)

  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
Alstublieft:
code:
1
\[(.*?)\]


bron:
http://stackoverflow.com/...t-between-square-brackets

EDIT:
code:
1
2
3
$Content = "test test [@User1] test test [@User2] test";
preg_match_all("/\[\@(.*?)\]/i", $Content, $matches);
debug($matches);


Net getest, werkt goed. De \@ kun je weglaten als je alleen de items wilt vinden tussen brackets en het niet uitmaakt of er een @ vóór staat.

[ Voor 50% gewijzigd door Storm90 op 27-02-2014 12:47 ]


  • HerrKauwer
  • Registratie: Augustus 2010
  • Laatst online: 21-11 13:15
Mooya schreef op donderdag 27 februari 2014 @ 12:43:
@Herrkauwer, de Split functie is niet meer goed supported, dus die gebruik ik liever niet.. Misschien dat ik het met een explode nog wel kan doen.
Ah sorry, explode heet dat inderdaad bij PHP

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
PHP:
1
2
3
4
$content = "test test [@User1] test test [@User2] test [ditisergeen] test test";
preg_match_all('/\[@(.*?)\]/', $content, $matches);

var_dump($matches);

@ erbij betrekken ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Storm90
  • Registratie: September 2008
  • Laatst online: 09-09 15:23
RobIII schreef op donderdag 27 februari 2014 @ 12:47:
[...]

PHP:
1
2
3
4
$content = "test test [@User1] test test [@User2] test [ditisergeen] test test";
preg_match_all('/\[@(.*?)\]/', $content, $matches);

var_dump($matches);

@ erbij betrekken ;)
Haha grappig, ik had 'm net aangepast XD

[ Voor 20% gewijzigd door Storm90 op 27-02-2014 12:51 ]


  • Mooya
  • Registratie: November 2001
  • Laatst online: 23:07
Super, bedankt!
Dit werkt, en kom ik verder mee.
Pagina: 1