/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Problemer med ereg()
Fra : HellFish


Dato : 07-11-01 13:13

Hej

Er der en der kan se hvad der er galt med føglende stump kode, jeg sys ikke
det ser forkert ud men det virker ikke, ligemeget hvad $kvm er hopper den
ind i den sidste if.

if ($kvm)
{
   $lenkvm=strlen($kvm);
   if (!ereg("([0-9]{$lenkvm})", $kvm))
   {
      //Gør nøget
      exit;
   }
}

----
HellFish

 
 
Kim Emax - ayianapa.~ (07-11-2001)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 07-11-01 14:13

"HellFish" <hellfish@sol.dk> skrev

> Er der en der kan se hvad der er galt med føglende stump kode, jeg sys
ikke
> det ser forkert ud men det virker ikke, ligemeget hvad $kvm er hopper den
> ind i den sidste if.
>
> if ($kvm)
> {
> $lenkvm=strlen($kvm);
> if (!ereg("([0-9]{$lenkvm})", $kvm))

hvad tror du "{" gør i regulære udtryk?

og hvad vil du have den matcher? pt matcher den et tal efterfulgt af
{$lenkvm}, er det det du vil?

og har du noget at bruge det matchede udtryk til bagefter? ellers fjern (),
så der er mindre, der forvirrer dig.

--
Take Care
Kim Emax
http://www.emax.dk
http://www.ayianapa.dk
http://www.artificial-dreams.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks mest avancerede VinWebShop



Peter Brodersen (07-11-2001)
Kommentar
Fra : Peter Brodersen


Dato : 07-11-01 15:04

On Wed, 7 Nov 2001 14:13:02 +0100, "Kim Emax - ayianapa.dk"
<newsgroup@sletdette-ayianapa.dk> wrote:

>og hvad vil du have den matcher? pt matcher den et tal efterfulgt af
>{$lenkvm}, er det det du vil?

Normalt burde det ikke være et problem, da dette er en normal måde at
escape variabler på, fx:

<?
$person[1]['navn'] = "Peter Brodersen";
print "Jeg hedder {$person[1]['navn']}";
// outputter: Jeg hedder Peter Brodersen
?>

Her bliver variablen i {...} altså interpoleret, før noget andet sker.

Det samme er tilfældet i hans eksempel. Eller som et eksempel
herunder:

<?
$navn = "Peter Brodersen";
$regexp[1]['efternavn'] = "r[oy][a-f]+rs";

if (ereg("ter[[:space:]][Bb]{$regexp[1]['efternavn']}en",$navn)) {
   print "MATCHER";
} else {
   print "MATCHER IKKE";
}
?>

Her bliver match-string'en altså til
"ter[[:space:]][Bb]r[oy][a-f]+rs". Og i den string er der ikke noget
{} tilbage, som regex-engine'n bekymrer sig om.

--
- Peter Brodersen

Peter Brodersen (07-11-2001)
Kommentar
Fra : Peter Brodersen


Dato : 07-11-01 15:45

On Wed, 07 Nov 2001 15:03:37 +0100, Peter Brodersen
<professionel@nerd.dk> wrote:

>Og i den string er der ikke noget
>{} tilbage, som regex-engine'n bekymrer sig om.

.... hvilket selvfølgelig også er problemet i det oprindelige indlæg.
{} er ganske enkelt ikke tilbage i det endelige udtryk, i modsætning
til hvad, der ønskes.

--
- Peter Brodersen

Andreas Kleist Svend~ (07-11-2001)
Kommentar
Fra : Andreas Kleist Svend~


Dato : 07-11-01 14:31

On 07 Nov 2001 12:13:03 GMT
HellFish <hellfish@sol.dk> wrote:

> Er der en der kan se hvad der er galt med føglende stump kode, jeg sys ikke
> det ser forkert ud men det virker ikke, ligemeget hvad $kvm er hopper den
> ind i den sidste if.

Det ville gøre det en hel del lettere at hjælpe hvis du fortalte hvad det er du prøver at matche.

--
mvh Andreas
"Jeg har også opgraderet til Linux"

HellFish (07-11-2001)
Kommentar
Fra : HellFish


Dato : 07-11-01 15:20

Andreas Kleist Svendsen <usenetnospam@nau.dk> wrote in
news:20011107143127.49076952.usenetnospam@nau.dk:

> Det ville gøre det en hel del lettere at hjælpe hvis du fortalte hvad
> det er du prøver at matche.
>
Meningen er at den skulle tage et tal fra en form, tallet kan være på
forskellige længde. Det der så skulle gøres er at tjekke at tallet kun
indeholder tal alt efter hvir mange cifre taller er langt.

----
HellFish

Anders Johannsen (07-11-2001)
Kommentar
Fra : Anders Johannsen


Dato : 07-11-01 15:16

> if ($kvm)
> {
> $lenkvm=strlen($kvm);
> if (!ereg("([0-9]{$lenkvm})", $kvm))

Hvis du ønsker at se, om strengen udelukkende består af tal fra 0-9 kan flg.
udtryk med fordel anvendes:

"^[0-9]+$"

/A



Dennis Iversen (07-11-2001)
Kommentar
Fra : Dennis Iversen


Dato : 07-11-01 15:15

HellFish wrote:
>
> Hej
>
> Er der en der kan se hvad der er galt med føglende stump kode, jeg sys ikke
> det ser forkert ud men det virker ikke, ligemeget hvad $kvm er hopper den
> ind i den sidste if.
>

prøv med "([0-9]{{$lenkvm}})" istedet for.
{} har særlig betydning i forhold til variabler,
hvorved {} slettes ved din metode og jeg regner med
at du vil måle længden af din variable vha netop {}.

ved $kvm=6
bliver dit udtryk =
"([0-9]6)"

iøvrigt hopper den derfor heller ikke ind i løkken
ved udtryk som 123 og 1234 og 12345 og 123456

ved min metode bliver det istedet for
"([0-9]{6})" hvilket jeg regner med, er det, du forsøger.

- dennis iversen

HellFish (07-11-2001)
Kommentar
Fra : HellFish


Dato : 07-11-01 21:13


"Dennis Iversen" <dbi@mail1.stofanet.dk> skrev i en meddelelse
news:3BE941E9.72F11CC8@mail1.stofanet.dk...

> prøv med "([0-9]{{$lenkvm}})" istedet for.
> {} har særlig betydning i forhold til variabler,
> hvorved {} slettes ved din metode og jeg regner med
> at du vil måle længden af din variable vha netop {}.
>
> ved $kvm=6
> bliver dit udtryk =
> "([0-9]6)"
>
> iøvrigt hopper den derfor heller ikke ind i løkken
> ved udtryk som 123 og 1234 og 12345 og 123456
>
> ved min metode bliver det istedet for
> "([0-9]{6})" hvilket jeg regner med, er det, du forsøger.
>
> - dennis iversen

Tusind tak, det var jo lige det jeg skulle bruge :)

----
HellFish



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste