Avatar billede kasbas91 Nybegynder
30. september 2011 - 13:21 Der er 7 kommentarer og
1 løsning

Hej hvordan plukker jeg nogle ord ud af en streng. ?

Hej eksperten.dk

Jeg har min streg her: cms/:username/pages/:id

Der vil jeg gerne have :username og :id taget ud af stregen da jeg

skal bruge de ord.

Jeg har prøvet med:

preg_match("/:[a-z0-9]+/", $routes['url'], $matches);

Men den finde kun :username.

Hvordan kan jeg gøre det, så den tager alle ord som starter med :
Avatar billede olsensweb.dk Ekspert
30. september 2011 - 13:33 #1
kan du ikke bare bruge explode http://dk.php.net/explode
og så exploderer på /
noget ala
$ar = explode ("/", $string );
Avatar billede kasbas91 Nybegynder
30. september 2011 - 13:38 #2
Nej jeg har jeg prøvet, jeg skal kun have de ord som starter med :

og ikke de andre, så det vil sige hvis jeg har en streg:

user/:userid/:pageid/dashboard

Så skal jeg kun have :userid, :pageid.

Jeg skal ikke have user og dashboard med...
Avatar billede Slettet bruger
30. september 2011 - 14:56 #3
Du kan bruge preg_match_all til at finde dem alle.
Avatar billede xicrow Nybegynder
30. september 2011 - 15:45 #4
Som #1 er inde på kan du fint bruge explode hvis strengen altid ser ud som eksemplet:

[code]$matches = array();

$arr = explode('/', $routes['url']);

foreach ($arr as $v){
  if (substr($v, 0, 1) == ':'){
    $matches[] = $v;
  }
}

print_r($matches);
[/code]


Så skulle du gerne ende med at $matches indeholder alle dele af strengen der starter med ":"

/xicrow
Avatar billede xicrow Nybegynder
30. september 2011 - 15:47 #5
Og så får du den også lige i en "pæn" udgave :P

$matches = array();

$arr = explode('/', $routes['url']);

foreach ($arr as $v){
  if (substr($v, 0, 1) == ':'){
    $matches[] = $v;
  }
}

print_r($matches);


/xicrow
Avatar billede kasbas91 Nybegynder
30. september 2011 - 16:05 #6
Okay tak xicrow smid et svar..
Avatar billede olsensweb.dk Ekspert
30. september 2011 - 16:25 #7
som #3 er inde på kan preg_match_all http://dk2.php.net/manual/en/function.preg-match-all.php også løse det.
<?php
$url = "cms/:username/pages/:id";
// $url = "user/:userid/:pageid/dashboard";
preg_match_all("/:[a-z0-9]+/i", $url, $ar);
print_r($ar);
?>

at jeg personligt syntes bedre om explode løsninegen, da den er nemmere at forstå IMHO, er noget andet
Avatar billede xicrow Nybegynder
30. september 2011 - 17:34 #8
Og et svar får du her ;)

#7
Det er fuldstændigt rigtigt, og jeg er også mere til explode-løsningen, af samme grund som dig.
Derudover så er RegEx som regl også tung at arbejde med, hvorfor jeg igen finder explode-løsningen bedre.

/xicrow
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester