Autor | Zpráva | ||
---|---|---|---|
TomasJ Profil |
Zdravím, zkoušel jsem regulární výraz aby mi vymazal znaky % a část kde je {xxxxxx} (místo xxxxxx bude hex kód nějaké barvy).
Zkoušel jsem to takto: preg_replace("|[\%][\{.{6}\}]|U","",$_POST['nick']); |
||
juriad Profil |
#2 · Zasláno: 4. 3. 2012, 14:31:46
s/%([0-9a-fA-F]{6})/\1/
takto to je v sedu, do php si pouprav sám |
||
TomasJ Profil |
#3 · Zasláno: 4. 3. 2012, 14:58:43
Bohužel, to mi nenahradí nic.
|
||
DJ Miky Profil |
#4 · Zasláno: 4. 3. 2012, 16:00:12
Hranaté závorky [ ] značí výčet povolených znaků, tedy zápis [\{.{6}\}] by odpovídal jednomu znaku z množiny ("[", "{", ".", "6", "}"). Fungovalo by to obalené jednoduchými závorkami, ale jsou tam zbytečné:
preg_replace('~%\{[0-9A-F]{6}\}~i', '', $_POST['nick']) Takový regulární výraz se pak chápe jako: 1) znak "%" 2) znak "{" 3) 6 znaků z množiny "0", "1", ..., "9", "A", "B", ..., "F" (díky modifikátoru "i" na konci RV projdou i malá písmena "a" až "f") 4) znak "}" |
||
TomasJ Profil |
No ale co když třeba samotné složené závorky nechci nahradit, ale chci nahradit pouze, pokud bude
{ffffff} .
Takže nějak takto: $nick = "ahoj %jak se {9234a}mas?"; $nick2 = "%zdravim {ff2222}te"; $nick3 = "ahoj {f2d} :)"; //A chtěl bych aby to vypadalo po preg_replace() takto: echo $nick; //vypíše "ahoj jak se {9234a}mas?" echo $nick2; //vypíše "zdravim te" echo $nick3; //vypíše "ahoj {f2d} :)" ............................. Takže nikdo neví? |
||
Tori Profil |
#6 · Zasláno: 5. 3. 2012, 08:21:44
TomasJ:
„aby mi vymazal znaky % a část kde je {xxxxxx}“ Tohle se dá chápat jako "znak % následovaný částí {xxxxxx}", ale asi jste - podle těch příkladů - chtěl "znak % nebo šest šestnáctkových číslic ve slož.závorkách": preg_replace('~%|\{[0-9A-F]{6}\}~i', '', $_POST['nick']); |
||
TomasJ Profil |
Tori:
Děkuji. Jak se říká tomu "|"? :) To je zvláštní. Teď mi jde napsat třeba %aa, %bb, ... %ff a vyhodí to nějaký divný znak. Procento se umaže a napíše mi to celé nějaký prapodivný znak.
Tedy jinak. Když napíšu znak % a za to 2 čísla 16kové soustavy, (0 - f) tak to vypíše jen divný znak. Asi už vím proč, chyba je u mě. Posílám obsah formuláře pomocí XMLHttpRequest(); . Děkuji, funguje jak má.
|
||
Tori Profil |
#8 · Zasláno: 5. 3. 2012, 17:22:48
TomasJ:
Asi "svislítko", v reguláru odděluje alternativy (manuál). Někde asi používáte (raw)urldecode na příchozí data. |
||
TomasJ Profil |
#9 · Zasláno: 5. 3. 2012, 17:28:30
Tori:
Ano v JS, hlavička setRequestHeader("Content-type", "application/x-www-form-urlencoded") . Takže jsem vše převedl na JS a nahradí se znak % ještě před odesláním formuláře. Děkuji.
|
||
Časová prodleva: 12 let
|
0