Autor | Zpráva | ||
---|---|---|---|
dku Profil |
#1 · Zasláno: 12. 3. 2013, 22:30:17 · Upravil/a: Moderátor (editace znemožněna) 13. 3. 2013, 09:43:45
Zdravím potřeboval bych pomoci s tímto:
Mám řetězec např. $str = 'Lorem ipsum $1 dolor \$1 sit amet.'; a chci nahradit "$1" za nějaký jiný řetězec ale jen tehdy, když ten dolar není escapnutý zpětným lomítkem. zkoušel jsem něco takového: $res = preg_replace('~[^\\\]\$1~', '+test+', $str); to ale nefunguje úplně správně. Moderátor Joker: Titulek „Regulární výraz“ nevystihoval podstatu dotazu. Příště zkus prosím vymyslet lepší.
|
||
Kcko Profil |
#2 · Zasláno: 12. 3. 2013, 22:45:15
$result = preg_replace('/\\\\\$1/s', 'test', $subject); |
||
dku Profil |
#3 · Zasláno: 12. 3. 2013, 22:59:44
Bohužel toto není ono, potřebuji opak - tzv. že "$1" se nahradí za "test", kdežto "\$1" nikoliv.
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 12. 3. 2013, 23:09:56
dku:
To samotné lomítko může být escapované? Tedy bude nahrazeno \\$x (= '\\\\$x' )?
|
||
Kcko Profil |
#5 · Zasláno: 12. 3. 2013, 23:17:34
$subject = 'Lorem ipsum $1 dolor \$1 sit amet.'; echo preg_replace('/(?<= )\$1/s', 'test', $subject); |
||
dku Profil |
#6 · Zasláno: 13. 3. 2013, 00:03:03
Díky, už jsem na to přišel:
$subject = 'Lorem ipsum $1 dolor \$1 sit amet.'; // nahradí všechny výskyty "$1" řetězcem "+test+" ale jen když před "$1" není zpětné lomítko $res = preg_replace('~(?<!\\\\)\$1~', '+test+', $subject); echo $res; // Lorem ipsum +test+ dolor \$1 sit amet. |
||
Časová prodleva: 11 let
|
0