[PHP] Regexp problemen.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Coubertin119 en ik zijn op het moment met verschillende regexps bezig, en we zijn tegen een aantal dingen opgelopen. Daarom dit topic. Voor Regexp problemen, maar ook voor oplossingen.

In php kun je twee soorten (talen) regexp gebruiken: Posix en PCRE.

Dit topic is dus om regexp problemen die je tegenkomt op te lossen en daar even een kote samenvatting voor te maken.

Het eerste wat je fout kunt doen (en ik dus fout heb gedaan) is de standaarden verwarren.

Posix is voor ereg() en alles wat daarmee begint.
PCRE is voor preg_ dingen. (ereg is de equivalent van preg_match, maar dat is niet hetzelfde genaamd :+)

[ Voor 28% gewijzigd door Mithrandir op 29-06-2003 21:58 ]

Verbouwing


Acties:
  • 0 Henk 'm!

Verwijderd

Post je regexps dan eens, zodat ook ik er kennis van kan en mag nemen :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Posix is wel iets meer dan alleen een regexp library hoor :o

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
ACM schreef op 29 June 2003 @ 22:06:
Posix is wel iets meer dan alleen een regexp library hoor :o
Leg uit? :)

Ik weet niet hoe leuk cheatah het vindt als ik een regexp van hem post (laat ik het erop houden dat hij 'best wel lang was' :+)

Verbouwing


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Mithrandir schreef op 29 June 2003 @ 22:51:
[...]


Leg uit? :)

Ik weet niet hoe leuk cheatah het vindt als ik een regexp van hem post (laat ik het erop houden dat hij 'best wel lang was' :+)
'best wel lang' wil niet zeggen dat het moeilijk is ofzo hoor ;)
Persoonlijk geef ik de voorkeur aan de Perl-like syntax (PCRE dus) omdat dezelfde syntax ook in veel andere talen gebruikt kan worden. Daarnaast is PCRE uitgebreider en vaak ook sneller dan POSIX regexps.
Wat je vaak ziet is dat mensen die regexpen een beetje onder de knie krijgen het vaak te pas en te onpas gaan gebruiken (ik ook), terwijl er vaak betere en snellere methoden voorhanden zijn. Kijk dus altijd eerst of je niet beter een gewone string-manipulatie method kan gebruiken voordat je regexpen gaat gebruiken, dat is bijna altijd sneller.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Dat heb ik gemerkt! :o

Ik zat heel erg moeilijke regexp van cheatah aan het ontleden, waar ik niet uitkwam. Daarna heb ik geprobeerd die regexp na te bouwen :o
Dat wilde ook niet echt ;)
En nu ben ik aan het prutsen met explode() en dat soort functies, en het werkt best goed.

Verbouwing


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Mithrandir schreef op 29 juni 2003 @ 23:01:
Dat heb ik gemerkt! :o

Ik zat heel erg moeilijke regexp van cheatah aan het ontleden, waar ik niet uitkwam. Daarna heb ik geprobeerd die regexp na te bouwen :o
Dat wilde ook niet echt ;)
En nu ben ik aan het prutsen met explode() en dat soort functies, en het werkt best goed.
ontleden van regexpen is 1, en zelf kunnen bouwen van een regexp aan de hand van een zekere logica is de 2e stap. Je kan een reguliere expressie zien als een soort programmeertaaltje op zich eigenlijk; op het moment dat je de syntax nog niet 100% onder de knie hebt blijft het lastig om zelf iets te maken, en zal je merken dat je er telkens weer aan blijft sleutelen om het net even beter te maken.
Als het echt ingewikkeld wordt is het vaak beter inderdaad om de logica op te splitsen, en reguliere expressies samen met gewone string-manipulaties te mixen, of gebruik te maken van call-back functies in je reguliere expressies (of de /e modifier - hoewel die wat nadelen kent).
Leesbaarheid verbeterd ten slotte ook de onderhoudbaarheid, en een paar simpelere regexpen kunnen vaak ook een betere performance hebben dan 1 ingewikkelde.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Ik heb nog een vraagje over een regexp. Deze regexp (met PHP code):

PHP:
1
2
3
$ircstring = ":hoi!woei:tralala!"; 
preg_match_all ('{^:(.*)!(.*)}', $ircstring, $result );
print_r ( $result );


komt dit uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Array
(
    [0] => Array
        (
            [0] => :hoi!woei:tralala!
        )

    [1] => Array
        (
            [0] => hoi!woei:tralala
        )

    [2] => Array
        (
            [0] => 
        )

)


Maar waarom returnt hij niet 'woei'? hoe zorg ik dat hij de eerste pakt die 'ie kan vinden, en niet de laatste? :)

Verbouwing


Acties:
  • 0 Henk 'm!

Verwijderd

waarom niet:

code:
1
'{^:(.*)!(.*):(.*)}'


???

En anders moet je misschien eens naar de functie van het '?' gaan kijken een keer, hoewel ik er niet zeker van ben of dit je probleem oplost... Je zal sowieso (met wat jij hebt) nooit alleen woei krijgen omdat na woei alles mag komen wat je wil, inclusief :tralala...

[ Voor 6% gewijzigd door Verwijderd op 30-06-2003 14:40 . Reden: Spellingsvouten :P ]


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Verwijderd schreef op 30 juni 2003 @ 14:40:
waarom niet:

code:
1
'{^:(.*)!(.*):(.*)}'


???

En anders moet je misschien eens naar de functie van het '?' gaan kijken een keer, hoewel ik er niet zeker van ben of dit je probleem oplost... Je zal sowieso (met wat jij hebt) nooit alleen woei krijgen omdat na woei alles mag komen wat je wil, inclusief :tralala...
Het is een relatief simpele opdracht: hij begint met een :. Dan mag alles komen, op een ! na, want bij de eerste ! moet hij stoppen. Van wat tussen de : en ! inzat moet hij returnen.
Niet alles wat tussen de begin ':' en de laatste ! zit.
Ik hoop dat ik duidelijk genoeg ben :+

Verbouwing


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Mithrandir schreef op 30 June 2003 @ 16:45:
[...]


Het is een relatief simpele opdracht: hij begint met een :. Dan mag alles komen, op een ! na, want bij de eerste ! moet hij stoppen. Van wat tussen de : en ! inzat moet hij returnen.
Niet alles wat tussen de begin ':' en de laatste ! zit.
Ik hoop dat ik duidelijk genoeg ben :+
Dan moet je dit doen:
PHP:
1
preg_match_all ('/:(.*?)!/', $ircstring, $result );

dat geeft deze uitkomst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [0] => Array
        (
            [0] => :hoi!
            [1] => :tralala!
        )

    [1] => Array
        (
            [0] => hoi
            [1] => tralala
        )

)


oftewel: je match ungreedy maken, en in de hele string laten zoeken in plaats van alleen vanaf het begin (de ^ )

[ Voor 9% gewijzigd door crisp op 30-06-2003 16:50 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
crisp schreef op 30 juni 2003 @ 16:49:
[...]

Dan moet je dit doen:
PHP:
1
preg_match_all ('/:(.*?)!/', $ircstring, $result );

dat geeft deze uitkomst:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
    [0] => Array
        (
            [0] => :hoi!
            [1] => :tralala!
        )

    [1] => Array
        (
            [0] => hoi
            [1] => tralala
        )

)


oftewel: je match ungreedy maken, en in de hele string laten zoeken in plaats van alleen vanaf het begin (de ^ )
Maar nu matcht hij er meer dan 1 :+
En ik wil dat hij er maar één matcht. En {1} werkt niet in PCRE? (Hier geeft 'ie een mooie foutmelding als ik dat probeer :/)

Verbouwing


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Waarom probeer je niet:

PHP:
1
2
3
4
5
<?
$ircstring = ':hoi!woei:tralala!'; 
preg_match_all ('/^[^:]+:([^!]+)!(.+)/', $ircstring, $result ); 
print_r ( $result );
?> 


Het eerste matched alles behalve dat uitroepteken, en dan volgt een uitroepteken, en dan de rest van de string... Volgens mij is dat handiger.

Ik vroeg me alleen wel ff af of ! niet een speciaal karakter is... Moet je ff nakijken dus...

[ Voor 5% gewijzigd door Morrar op 30-06-2003 19:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb ook een regex probleem,
ik probeer alle <img> tags uit een html page in een arraytje te zetten, om dan de urls te checken en die verder te verwerken.

ik heb de html pagina in een variabele staan, en nu doe ik deze regex:

code:
1
$nummer = preg_match("/<img(.*)>/i",$request,$rij);


proberen om die tags eruit te krijgen, maar rij wordt een lege array en $nummer wordt 0

Er kunnen natuurlijk ook andere tags voor/achter die img tag staan en/of een newline, hoe moet ik die regex nou doen ? (me == newbie)

Acties:
  • 0 Henk 'm!

  • decipherer
  • Registratie: Februari 2002
  • Laatst online: 18:52
Nou ben ik ook niet zo'n regex held, maar volgens mij is je regex zo greedy, en zou je hem non-greedy moeten maken bv:
code:
1
$nummer = preg_match("/<img(.*?)>/i",$request,$rij)

De beste ideeën komen als je bezig bent.


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Zo werkt het bij mij:

PHP:
1
preg_match_all('/[img]"?([^"]+)"?.*[/img]/mi', $request, $rij);


In het array $rij[1] vind je alle srces. De m is voor multiple lines wat de meeste HTML pagina's zijn dus...

[ Voor 41% gewijzigd door Morrar op 30-06-2003 20:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Morrar schreef op 30 juni 2003 @ 20:15:
Zo werkt het bij mij:

PHP:
1
preg_match_all('/[img]"?([^"]+)"?.*[/img]/mi', $request, $rij);


In het array $rij[1] vind je alle srces. De m is voor multiple lines wat de meeste HTML pagina's zijn dus...
Tnx, hij doetet :D

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 11-09 11:19

chem

Reist de wereld rond

nog een tip voor preg_match_all; de standaard (default) array vind ik zelf vreselijk onleesbaar/verwerkbaar (zeker met veel submatches), dus geef ik de PREG_SET_ORDER define mee.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Nah dan gooi ik er zelf ook nog even een dingetje tegenaan... Ik ben bezig met een template-parser en heb er een "makelinks" functie in geknutseld. Die functie detecteerd dus http(s):// urls en email adressen en maakt er hyperlinks van. Bestaande links moeten echter wel met rust gelaten worden! Ik heb nu:

code:
1
2
3
4
5
6
7
//http(s)
'/\s(https?:\/\/)((?:[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+)|
    (?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))([^\s]*)(?!<\/a|A>)/'

//email
/\s((?:"[^"@]+")|(?:[a-zA-Z0-9_\.\-]+))@((?:(?:[a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4})|
    (?:\\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]))(?!<\/a|A>)/


dit match alles correct volgens mij, maar ik vroeg me toch af of het niet korter/sneller kon... Denk erom dat de volgende dingen allemaal geldig zijn en gevonden moeten worden:

http://123.123.123.123:4444/ellende?meer%20ellende
http://gewoon.een.domein.nl:4444/ellende?meer%20ellende

japie@ergens.nl
japie@[123.123.123.123]
"Japie heeft een heel vaag adres"@ergens.nl

Misschien een leuke breinbreker... Ik heb ze ff afgebroken i.v.m. layout, het moet achter elkaar uiteraard...

P.S. Kijkaan Tweakers doet het erg netjes, alleen de laatste twee notaties niet :)

[ Voor 12% gewijzigd door Morrar op 30-06-2003 23:43 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

POSIX (Portable Operating System Interface) is a set of standard operating system interfaces based on the Unix operating system. The need for standardization arose because enterprises using computers wanted to be able to develop programs that could be moved among different manufacturer's computer systems without having to be recoded. UNIX was selected as the basis for a standard system interface partly because it was "manufacturer-neutral." However, several major versions of UNIX existed so there was a need to develop a common denominator system.

Informally, each standard in the POSIX set is defined by a decimal following the POSIX. Thus, POSIX.1 is the standard for an application program interface in the C language. POSIX.2 is the standard shell and utility interface (that is to say, the user's command interface with the operating system). These are the main two interfaces, but additional interfaces, such as POSIX.4 for thread management, have been developed or are being developed. The POSIX interfaces were developed under the auspices of the Institute of Electrical and Electronics Engineers (IEEE).

POSIX.1 and POSIX.2 interfaces are included in a somewhat larger interface known as the X/Open Programming Guide 4.2 (also known as the "Single UNIX Specification" and "UNIX 95"). The Open Group, an industry standards group, owns the UNIX trademark and can thus "brand" operating systems that conform to the interface as "UNIX" systems. IBM's OS/390 is an example of an operating system that includes a branded UNIX interface.

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
chem schreef op 30 juni 2003 @ 20:26:
nog een tip voor preg_match_all; de standaard (default) array vind ik zelf vreselijk onleesbaar/verwerkbaar (zeker met veel submatches), dus geef ik de PREG_SET_ORDER define mee.
Ik snap het verschil niet helemaal tussen PREG_SET_ORDER en PREG_PATTERN_ORDER

Iets wat fout gaat bij mij nu nog:
PHP:
1
2
3
4
5
6
7
$regexp = '/((&|#)([^\x20\x07\x00\x0D\x0A\x2C]+))(,)(&|#)([^\x20\x07\x00\x0D\x0A\x2C]+)*/'; 
$ircstring = "#woei,#tsjakka,&wroar";
$bool = preg_match($regexp, $ircstring, $result, PREG_SET_ORDER);
if($bool);
{
    print_r ( $result );
}


De Regexp kijkt naar of de string een geldig IRC-kanaal is (begint met # of & met daarachteraan minimaal 1 letter. Daarna kan er een ',' komen, met daarna wéér een # of & met minimaal een letter.

Wat je hieruit krijgt geretuned is het volgende:
code:
1
2
3
4
5
6
7
8
9
10
Array
(
    [0] => #woei,#tsjakka,&wroar
    [1] => #woei
    [2] => #
    [3] => woei
    [4] => ,&wroar
    [5] => &
    [6] => wroar
)

De middelste mist in dat geval dus! Wat moet ik doen om dat tegen te gaan?

Verbouwing


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
Het verschil tussen PREG_SET_ORDER en PREG_PATTERN_ORDER:

Stel we hebben een tekst met e-mail adressen en die willen we eruit filteren. We nemen hiervoor de volgende (versimpelde) code:

PHP:
1
preg_match_all('/([a-zA-Z0-9\.\-_]+)@([a-zA-Z0-9\.\-]+)\.([a-zA-Z0-9]{2,4})/', $text, $adressen);


De eerste haakjes meten de username (voor de @), de tweede de hostnaam en de derde het top-level-domein. Deze delen worden opgeslagen in $adressen. De manier waarop dit gebeurd wordt bepaald door die ORDER directieven.

Bij PREG_PATTERN_ORDER krijg je de volgende matix

code:
1
2
3
4
5
          [0]               [1]               [2]
[0]   user1@host.tld    user2@host.tld    user2@host.tld
[1]   user1             user2             user3
[2]   host              host              host
[3]   tld               tld               tld


Oftewel: op de rijen staan de verschillende delen die tussen de haakjes staan, op de kolommen de verschillende dingen die erdoor gematched werden. Het aantal rijen is dus gelijk aan het aantal haakjes (+1 voor het gehele pattern natuurlijk).

Bij PREG_SET_ORDER is deze matrix geroteerd, dus:

code:
1
2
3
4
          [0]            [1]     [2]     [3]
[0]   user1@host.tld    user1    host    tld
[1]   user2@host.tld    user2    host    tld
[2]   user3@host.tld    user3    host    tld


Meestal loop je door het array en hangt het dus van je loop af wat handiger is....

[ Voor 9% gewijzigd door Morrar op 30-06-2003 22:41 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Mithrandir schreef op 30 juni 2003 @ 21:20:
[...]


Ik snap het verschil niet helemaal tussen PREG_SET_ORDER en PREG_PATTERN_ORDER

Iets wat fout gaat bij mij nu nog:
[...]
De middelste mist in dat geval dus! Wat moet ik doen om dat tegen te gaan?
zoiets:
PHP:
1
2
3
4
5
$ircstring = '#woei,#tsjakka,&wroar';
preg_match_all ('/[#&]([^,]|,(?![#&]))+/', $ircstring, $result );
echo '<pre>';
print_r ( $result[0] );
echo '</pre>';

oftewel: match alles na een # of & wat geen komma is, of een komma die niet gevolgd wordt door een # of &
Als je zeker weet dat je input op 1 regel is hoef je ook geen tabs, linefeeds e.d. af te vragen natuurlijk, dus dit lijkt mij dan de meest eenvoudige oplossing. Indien een kanaal ook geen komma of andere rare tekens mag bevatten zou het zelfs nog makkelijker kunnen; zo bijvoorbeeld:
PHP:
1
2
3
4
5
$ircstring = '#woei,#tsjakka,&wroar';
preg_match_all ('/[#&]\w+/', $ircstring, $result );
echo '<pre>';
print_r ( $result[0] );
echo '</pre>';

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
crisp > dank je wel :)

Ik loop nu nog tegen een probleempje op. Als ik namelijk wat crisp me net gaf in een grote regexp stop, en er zijn een keer meer of minder channels (dus meer of minder elementen in de gereturnde array), dan is het heel moeilijk om de array uit te pluizen.
Kan een regexp dingen niet op deze manier returnen?:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
    [0] => //compleet gematcht gedeelte
    [1] => Eerste match level 1
    [2] => Tweede match level 1
    [3] => Array //deze match heeft childs. De
                 //derde waarde wordt in het 0'de element gestopt
        (
               [0] => Derde match level 1
               [1] => Eerste match level 2
               [2] => Tweede match level 2
        )
 )


Maw: Hij doorloopt de regexp op een tree-manier. () binnen () worden een nieuw level in de array.
Dat zou volgens mij grote arrays ontleden makkelijker maken.
Ik hoop dat mijn uitleg duidelijk genoeg is :+

[ Voor 19% gewijzigd door Mithrandir op 01-07-2003 10:16 ]

Verbouwing


Acties:
  • 0 Henk 'm!

Verwijderd

Hoi ik zit weer met een probleempje,

ik doe de volgende match:

PHP:
1
2
3
if (preg_match ("/$host/i", $denij)) {
 print "blaat";
}


met als $denij: web1000.com
en als host: ffw8e.web1000.com

waarom matcht ie nu niet?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 19:46

crisp

Devver

Pixelated

Verwijderd schreef op 01 July 2003 @ 21:34:
Hoi ik zit weer met een probleempje,

ik doe de volgende match:

PHP:
1
2
3
if (preg_match ("/$host/i", $denij)) {
 print "blaat";
}


met als $denij: web1000.com
en als host: ffw8e.web1000.com

waarom matcht ie nu niet?
omdat de punt een speciale betekenis heeft :)
Je kan preg_quote() gebruiken om alle tekens met speciale betekenis in een string te escapen :)
Mithrandir schreef op 01 July 2003 @ 10:14:
crisp > dank je wel :)

Ik loop nu nog tegen een probleempje op. Als ik namelijk wat crisp me net gaf in een grote regexp stop, en er zijn een keer meer of minder channels (dus meer of minder elementen in de gereturnde array), dan is het heel moeilijk om de array uit te pluizen.
Kan een regexp dingen niet op deze manier returnen?:
[...]
Maw: Hij doorloopt de regexp op een tree-manier. () binnen () worden een nieuw level in de array.
Dat zou volgens mij grote arrays ontleden makkelijker maken.
Ik hoop dat mijn uitleg duidelijk genoeg is :+
ik denk dat ik begrijp wat je bedoelt, echter denk ik niet dat dat met 1 grote regexp te doen is. Misschien dat je wat met callback-functies kan doen en meerdere regexpen, eventueel in een recursieve loop.

[ Voor 71% gewijzigd door crisp op 01-07-2003 22:05 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

crisp schreef op 01 juli 2003 @ 21:57:

omdat de punt een speciale betekenis heeft :)
Je kan preg_quote() gebruiken om alle tekens met speciale betekenis in een string te escapen :)
PHP:
1
preg_match ("/preg_quote($host)/i", $denij)


doetet ook niet :| escapen in de array waar ik $host uithaal wil ook niet :S

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Verwijderd schreef op 01 July 2003 @ 22:36:
[...]


PHP:
1
preg_match ("/preg_quote($host)/i", $denij)


doetet ook niet :| escapen in de array waar ik $host uithaal wil ook niet :S
ff denken he... preg_quote is een PHP functie....

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

Verwijderd

mocean schreef op 01 July 2003 @ 23:29:
[...]

ff denken he... preg_quote is een PHP functie....
weetik, dat was ook het laatste wat ik had geprobeerd, dit werkt namelijk ook niet:

code:
1
2
3
4
    $preghost = preg_quote($host);
    if (preg_match ("/$preghost/i", $denij)) {
        print "HOWHOWHOW";  
    }


als ik $preghost print geeft ie netjes een geslashde string weer :/ ik snapper nix meer van :?

Acties:
  • 0 Henk 'm!

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 13-09 21:40
Verwijderd schreef op 02 July 2003 @ 22:52:
[...]


weetik, dat was ook het laatste wat ik had geprobeerd, dit werkt namelijk ook niet:

code:
1
2
3
4
    $preghost = preg_quote($host);
    if (preg_match ("/$preghost/i", $denij)) {
        print "HOWHOWHOW";  
    }


als ik $preghost print geeft ie netjes een geslashde string weer :/ ik snapper nix meer van :?
Hij voert je opdracht in je string niet uit...

PHP:
1
2
3
4
5
6
function functie($param)
{
    return $param
}
$hoi = "functie('met een parameter')"; //$hoi bevat "functie('met een parameter')"
$hoi = functie('met een paramter'); //$hoi bevat "met een parameter"


Ik hoop dat je het snapt ;)

edit:
Let ook op de kleurtjes ;)

[ Voor 11% gewijzigd door Mithrandir op 02-07-2003 23:04 ]

Verbouwing


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 14:45
met als $denij: web1000.com
en als host: ffw8e.web1000.com
Je zoekt dus "ffw8e.web1000.com" in "web1000.com"... Dat kan dus niet lijkt me: wat je zoekt is langer dan hetgeen waarin je zoekt.... Als je ze omdraait matcht het wel. Wel ff de preg_quote doen dan op de andere string :)
Pagina: 1