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: 11 let
|
0