2010-12-08 34 views
0

沒有使用正則表達式替換很多,我不知道我是如何做到這一點是做到這一點的最佳方式。 我試着改變如:PHP - preg_replace簡化?

'(.123.)' OR 123.)' OR '(.123 

'.(123).' OR 123).' OR '.(123 

必須在中間一個int。

preg_replace('/\.\)/', ').',preg_replace('/\(\./', '.(',preg_replace('/(\.[0-9]+\.)|(\.[0-9]+|[0-9]+\.)/', '($0)',$str))); 

的代碼,我有以上的作品,只是不知道是否有更好的方式來做到這一點

回答

1

您可以用兩個替代,一個是做的更簡單(一個數字,一個用於前)。在數字之後?

$str=preg_replace('/\(\.(\d)/', '.($1', $str); 
$str=preg_replace('/(\d)\.\)/', '$1).', $str); 

甚至有可能一次完成此操作,但它看起來很醜。在這裏,我尋找一個數字,前面有(.,後面跟着.),或者可選地跟着(.,然後是.),然後用.(number).替換整個批次 - 這會將.(123轉換爲.(123).,您可能想也可能不想要...

$str=preg_replace('/\(\.(\d+)(?:\.\))?|(?:\(\.)?(\d+)\.\)/', '.($1$2).', $str); 
+0

是的,那是更好的謝謝你:D – 2010-12-08 11:11:07