Autor | Zpráva | ||
---|---|---|---|
had Profil * |
#1 · Zasláno: 24. 2. 2013, 12:54:56
Zdravím,
pokouším se sestavit regulární výraz na detekci (alespoň nejběžnějších) windows cest k souborům... mám něco takového: <?php // ($this->retezec obsahuje string z jinych OOP funkci) preg_match_all('~([a-zA-Z]:\\[a-zA-Z0-9\.\-\\ \(\)_!:]+\.[a-zA-Z0-9]+)~', $this->retezec, $pole); ?> Když zkusím výraz samotný na tomhle testeru http://webtest.spstrutnov.cz/reg_vyr_tester.php, tak projde... ale v kódu ne - vrací prázdné pole... co je špatně, nevíte někdo, prosím? Předem díky za pomoc Had |
||
juriad Profil |
regulár je sice správně, ale není escapovaný pro použití v php, každé zpětné lomítko musí být escapované (lžu, ale pro tvé dobro)
'~([a-zA-Z]:\\\\[a-zA-Z0-9\\.\\-\\\\ \\(\\)_!:]+\\.[a-zA-Z0-9]+)~' // ideálně '~([a-zA-Z]:\\\[a-zA-Z0-9\.\-\\\ \(\)_!:]+\.[a-zA-Z0-9]+)~' // cesta nejmenšího odporu http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single : // Outputs: You deleted C:\*.*? echo 'You deleted C:\\*.*?'; // Outputs: You deleted C:\*.*? echo 'You deleted C:\*.*?'; |
||
had Profil * |
#3 · Zasláno: 24. 2. 2013, 13:07:35 · Upravil/a: had
hm... no jo, vážně... Já měl ale za to, že když chci třeba escapovat tečku, že to jednoduše napíšu takhle...:
\. ...a děkuju, juriade. :) |
||
juriad Profil |
#4 · Zasláno: 24. 2. 2013, 13:09:40
regulární výraz je sice:
\. '\\.' |
||
Joker Profil |
#5 · Zasláno: 24. 2. 2013, 13:11:26
had:
„Já měl ale za to, že když chci třeba escapovat tečku, že to jednoduše napíšu takhle“ Ano. Pro regulární výraz. Když to je regulární výraz v řetězci, musí se ještě escapovat zpětné lomítko pro řetězec. |
||
had Profil * |
#6 · Zasláno: 24. 2. 2013, 13:13:03
hm..ok, tak jsem zase o něco chytřejší... ;) Pánové, díky...! :)
|
||
Časová prodleva: 11 let
|
0