2010-12-08 44 views
0

n'ont pas utilisé regex remplace beaucoup et je ne suis pas sûr si la façon dont j'ai fait cela est la meilleure façon de le faire. Im essayant de changer par exemple:PHP - preg_replace simplifier?

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

à

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

doit être un entier au milieu.

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

le code que j'ai travaux ci-dessus, me demandais s'il y a une meilleure façon de le faire

Répondre

1

Pourriez-vous faire plus simplement deux remplacements, l'un pour (. Avant un chiffre et un pour.) après un chiffre?

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

Il est même possible de le faire en une seule fois, mais il semble plus laid. Ici, je cherche un numéro précédé par (. et éventuellement suivi par .), ou éventuellement précédé par (. et suivi par .), puis remplacer le lot entier par .(number). - ce qui a pour effet de transformer en .(123)., que vous pouvez ou ne voulez pas ...

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

oui, c'est mieux que vous: D –