'\ 0 \ 0C' için 'abc' yerine nasıl

3 Cevap php

'\ 0 \ 0C' için 'abc' yerine nasıl

Aşağıdaki kodu 'ac' başarısız ve çıkış vermek olduğunu

<?php
 $input = 'abc';
 $pattern = '/b/i';
 $replace = "\\0\\0";
 $output = preg_replace($pattern, $replace, $input);
 echo $output;
?>

3 Cevap

Şüphe daha ters eğik çizgi eklediğinizde:

$replace = '\\\\0\\\\0';

Kaçan ilk seviye PHP dizge ayrıştırıcı içindir. Tek tırnak ve çift tırnak hem de \\ \ olarak yorumlamak. Bir sonraki seviye regex çözümleyici içindir.

Yani PHP görüyor:

\\\\0\\\\0

: o kadar yorumladığı

\\0\\0

hangi regex ayrıştırıcı dize olarak yorumluyor:

\0\0

Denedin

$replace = '\\0\\0';

?

Burada "kıvrımlara" bu ekstra eğik çizgi olmadan başka yolu

$string="abc";
$s = split("[bB]",$string);
print_r( implode('\0\0' , $s) );