bir kaçış karakteri önündeki sürece karakteri değiştirmek için preg_replace kullanın

2 Cevap php

i'm trying to do the following hope there's a reg_ex expert around to shed some light. I need to replace the character [ in my code and make it a {. But there is cases where the [ needs to remain a [ and not change. So the way i figured it is i need to use the

preg_replace ("[", "{", $ string);

function with a suitable regular expression that will result the [ characters that are not preceded by the escape character to be used lets say . So how can i get to replace this "[" and not this "["?

teşekkürler şimdiden bir sürü

2 Cevap

Bunu yapabilirsin, ve bir kongre çağrısı negative lookbehind assertions ile bulunuyor

echo preg_replace( "/(?<!\\\\)\\[/", '{', "\[ [ [ \[ [" );

Temel olarak, "[{\ öncesinde değil, sadece zaman ile değiştirin"

Bütünlüğü için:

Lütfen sıradanifade motor ilkel ve negative lookbehinds (PHP ile böyle değil) nasıl bilmiyor, bunu yapmak için başka bir yol:

$str = preg_replace( "/(^|[^\\\\])\\[/", '$1{', $str );

Bu ^ (başlangıç) veya [^\] (herhangi bir non-eğik çizgi) ile sınırlı önceki karakteri, yakalar, ve yerine aracılığıyla geçer.