2010-12-08 13 views
0

regexはあまり使われていませんが、私がこれをやった方法が最善の方法であるかどうかは分かりません。 などを変更しようとしているイム: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

ます(数字とに1つ前に。。)2つの交換のための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 –