| Autor | Zpráva | ||
|---|---|---|---|
| Carloss Profil * |
#1 · Zasláno: 31. 3. 2012, 17:24:45 · Upravil/a: Carloss
Dobrý den, pracuji s regulárními výrazy, ale nedovedu si poradit s jedním ořískem. Chci aby php nahradilo všechny uvedené znaky (např.: a, b, c) za 'd'. Problém nastává, když chci aby php nenahradilo jeden z uvedených znaků (a, b, c).
Skusil jsem kód: $text = 'a,b,x,q,c';
$ignore = b; //znak se bude měnit náhodně
$text = preg_replace("/([^$ignore][abc])+/", 'd', $text);Ale nefunguje správně. Všem děkuji předem za odpověď. Omlouvám se, mělo tam být: $ignore = 'b'; Vyřešeno: preg_replace("/([[^$ignore]abc])+/", 'd', $text);Omlouvám se podruhé :), ale ani kód v předchozím příspěvku nefunguje. |
||
| fex Profil * |
#2 · Zasláno: 31. 3. 2012, 18:43:31
Prosím co ti natom přesně nefunguje?
mě vyšlo ad,x,qd vše co mělo.
|
||
| Tori Profil |
#3 · Zasláno: 31. 3. 2012, 18:58:35
Carloss:
Napadl mne jen ošklivý způsob přes pole: $text = 'a,b,x,q,c';
$search = array('a','b','c'); // výchozí nahrazované řetězce
$ignore = array('x'); // toto se nebude nahrazovat
$search = implode('|', array_diff($search, $ignore));
$text = preg_replace("/($search)+/", 'd', $text); |
||
| Carloss Profil * |
#4 · Zasláno: 31. 3. 2012, 19:51:50
Teď už opravdu vyřešeno. Divím se ale, že mě to nenapadlo dříve:
$text = preg_replace("/([abc](?<!$ignore))+/", 'd', $text); |
||
|
Časová prodleva: 14 let
|
|||
0