[PHP] eregi \

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
heey,

ik heb (volgens mij) een heel simpel stuk code maar om de 1 of andere manier lukt het mij niet.
PHP:
1
2
if (eregi("\\", $top3[1])) {
   echo "contains a slash.";

$top3[1] is bv: "C:\PROGRAM FILES\ISS\BLACKICE\BLACKD.EXE"
soms met "" soms zonder, dat is verschillend

maar het vreemde is dus dat het scriptje de \ niet eruithaalt.
ook \\ vervangen door & #92; werkt niet.
edit:
(zonder spatie maar anders haalde got hem er al uit :))

als ik \\ vervang door bv program dan werkt de code wel.
op google heb ik iets dat hiermee mee te maken heeft niet echt kunnen vinden maar misschien anderen wel! succes !

[ Voor 11% gewijzigd door Verwijderd op 28-03-2004 00:33 ]


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

En (eregi("[\]", $top3[1])) werkt ook niet?

[ Voor 32% gewijzigd door André op 28-03-2004 00:44 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja die werkt :)
bedankt !
kan ik weer verder gaan knutselen :)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Het probleem is dat je de backslash twee keer moet escapen; zowel in de PHP string als in de reguliere expressie. Je wilt immers dat 'ie "\" matcht en dus moet er "\\" in je reguliere expressie string komen, en dus moet je "\\\\" schrijven in PHP.

De reden dat André's methode ook werkt, is dat je binnen een character set niet hoeft te escapen (dus hoef je in je reguliere expressie string nog maar één slash te krijgen) en vervolgens hoef je in PHP backslashes die niet gevolgd worden door een 'speciaal' karakter (zoals backslash zelf) niet te escapen met een backslash.

Ik hoop dat je nu een beetje begrijp hoe het werkt en in het vervolg dit soort dingen ook zelf kan oplossen. Mede door dat oneindig vaak escapen is het gebruiken van reguliere expressies in PHP geen pretje.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

In character classes moet je toch ook escapen :? Hoe kun je anders ooit de ] meenemen in een character class?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:44

crisp

Devver

Pixelated

ereg is POSIX en niet PCRE, maar voor een simpele lookup zou ik toch strpos oid gebruiken ipv een reguliere expressie

[ Voor 4% gewijzigd door crisp op 29-03-2004 00:33 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
.oisyn schreef op 29 maart 2004 @ 00:27:
In character classes moet je toch ook escapen :? Hoe kun je anders ooit de ] meenemen in een character class?
Nee hoor, echt niet. Bijna alle speciale characters zijn niet speciaal binnen een bracket expression en hoeven dan niet meer geëscaped te worden. ] is niet-speciaal als eerste teken, dus als je daar op wil matchen moet je die in het begin zetten: []] matcht alleen de ] (en er had eventueel nog wel een ^ voor gemogen). Ja, dat is gaar, maar ik heb het ook niet verzonnen. :P Echt een probleem is het natuurlijk niet, want de volgorde van karakters binnen een bracket expression is irrelevant.

Een soortgelijk verhaal gaat op voor ^ die alleen speciaal is als eerste karakter. Ik denk dat dat betekent dat je met een bracket expression niet een enkele ^ kan matchen (want die is dan speciaal) maar in die situatie kun je weer de hele brackets achterwege laten.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

maar in die situatie kun je weer de hele brackets achterwege laten
Waardoor ie dus weer alsnog ge-escaped moet worden :P
Maar ok, duidelijk, tx :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Soultaker schreef op 29 maart 2004 @ 03:05:
Ik denk dat dat betekent dat je met een bracket expression niet een enkele ^ kan matchen
code:
1
2
if(eregi("[\^]","wel^waar") )
    echo ":P";
Verwijderd schreef op 28 maart 2004 @ 00:32:
op google heb ik iets dat hiermee mee te maken heeft niet echt kunnen vinden
Begin altijd op www.php.net. Zoek eregi op en via posix regexps weet je dat je man 7 regex in moet tikken. Desnoods in Google - eerste hit :)


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

via posix regexps weet je dat je man 7 regex in moet tikken
offtopic:
Het gebruik van het pad "C:\PROGRAM FILES\ISS\BLACKICE\BLACKD.EXE" door TS getuigt ervan dat hij geen Linux gebruikt, dus man 7 regex lijkt me niet te werken... ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

NMe84 schreef op 29 maart 2004 @ 11:37:
dus man 7 regex lijkt me niet te werken... ;)
offtopic:
Lees m'n post nog maar een keertje - helemaal, deze keer, inclusief die regel over google. Probeer het zelf ook eens uit ;)


Journalism is printing what someone else does not want printed; everything else is public relations.

Pagina: 1