The best way to do this is using a trigger, but there are several considerations based on the problem you've described...
Validation
If you know exactly how many digits all your phone numbers will be then this isn't a problem, you simply need to check for the right number of characters, but I know of several countries (France included, which by the +33 dialling code is where I am guessing you are from) whose phone numbers can have a varying number of digits. In the UK, both 9 and 10 digit (excluding prefixes) are valid, which means unless you are checking against a database you may run into some problems.
Replacement
Replacing parts of the phone number sting is trivial as long as you know exactly which characters to replace, but as described above if the number is not n digits long, you will have some issues.
Solution
If you just want the two particular cases you gave in your question to be covered, the following code will suffice:
trigger PhoneReplace on Account (before insert) {
for (Account a : trigger.New) {
if (!String.IsBlank(a.Phone)) {
if (a.Phone.startsWith('0033')) {
a.Phone = '0' + a.Phone.right(a.Phone.length() - 4);
} else if (a.Phone.startsWith('33')) {
a.Phone = '0' + a.Phone.right(a.Phone.length() - 2);
}
}
}
}