Avatar billede krab Praktikant
24. september 2007 - 10:20 Der er 6 kommentarer og
2 løsninger

rexExp uddrag af tekst.

Jeg skal bruge det ord/tekst der kommer efter "?" i min $str i eksemplet herunder skulle arr[0] gerne være "test" .. Hvordan gør jeg det? :)

<?
$str = "http://site.dk/?test=jada";

preg_match("//",$str,$arr);

echo $arr[0];
?>
Avatar billede nielle Nybegynder
24. september 2007 - 10:22 #1
Ikke at den ikke kan klares med regexp, men hvorfor ikke bruge den metode som er lavet til formålet:

http://dk.php.net/parse_url
Avatar billede montago Praktikant
24. september 2007 - 10:24 #2
1. du kan hente hele querystring i een vending uden at bruge regex
2. du kan hente hele url uden querystring i een vending uden regex

begge er muligt via servervariable... jeg kender dem ikke i PHP men de eksistere med garanti, fordi de netop også findes i ASP

ellers kan du meget meget simpelt gøre følgende

$arr = $str.split("?")
Avatar billede krab Praktikant
24. september 2007 - 10:43 #3
Tror ikke helt i er med på hva jeg vil :)..

Jeg skal kun bruger "test"..

Ved at bruge split vil jeg få test=jada
ved at bruger parse_url vil jeg få query = test=jada

Men lavede bare et script selv :)

$q = $_SERVER['QUERY_STRING'];

$i = strpos($q,"=");
if($i == 0) {
    $i = strpos($q,"&");
}
if($i != 0) {
    $q = substr($q,0,$i);   
}
echo $q;
Avatar billede nielle Nybegynder
24. september 2007 - 10:45 #4
Begge løsningsforslag ville ellers have løst dit problem.
Avatar billede krab Praktikant
24. september 2007 - 10:45 #5
:D er det rigtig?? .., hehe, det er også mandag morgen :)
Avatar billede montago Praktikant
24. september 2007 - 11:14 #6
...noob

$arr = $str.split("?")
$params = $arr[1].split(/=/g)

foreach ( $par in $params ){
  $key = $par[0] //"test"
  $val = $par[1] //"jada"
}
Avatar billede montago Praktikant
24. september 2007 - 12:22 #7
hov... hehe,...
det vidst mig der er noob...

querystring skal self først splittes over alle "&" derefter pr "="

oops... :)


$arr = $str.split("?")
$params = $arr[1].split(/&/g)

foreach ( $par in $params ){
  $part = $par.split(/=/)

  $key = $part[0] //"test"
  $val = $part[1] //"jada"
}

så er den kompatibel med : "http://minside.dk/?a=1&b=2&c=3"
Avatar billede olebole Juniormester
25. september 2007 - 00:30 #8
<ole>

En for-løkke performaer langt bedre end en foreach - og så er der vel ingen grund til at bruge RegExp:

$arr = explode("?", $str);
$params = explode("&", $arr[1]);

for ( $i=0,$j=count($params); $i<$j; $i++  ) {
  $part = explode("=", $params[$i]);

  $key = $part[0]; //"test"
  $val = $part[1]; //"jada"
}

- og så 'ælsger' jeg jo det lille, søde tegn 'semikolon'  ;o)

/mvh
</bole>
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

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