2012-04-14 71 views
1

我得到這個字符串:preg_replace:如何不刪除整個部分?

$string = "hello123hello237ihello523"; 

我想尋找一個「O」後跟一個數字。然後我只想刪除「o」。

我一直想:

preg_replace("/kl[0-9]/", "", $string); 

的問題是,是去除數量以及。我只想刪除「o」。有任何想法嗎?

回答

2

使用正先行:

echo preg_replace("/o(?=[0-9])/", "", $string); 

更多信息:http://www.regular-expressions.info/lookaround.html

其他的一個選項是:

echo preg_replace("/o([0-9])/", "\\1", $string); 

這將更換O- [數]與[數]

+1

根據文檔,從PHP 4.0.4開始,'$ 1'優於'\\ 1'。 – cmbuckley 2012-04-14 11:37:57

+0

@cbuckley,你是正確的,但「可取」並不意味着\\ 1已被棄用。由於大多數其他語言都使用\\ 1語法,所以我更願意堅持下去:) – strkol 2012-04-14 11:42:59

0

您可以使用反向引用:

echo preg_replace('/o([0-9])/', '$1', $string); 

有關引用子模式的信息,請參閱the documentation