Skip to content

Commit f7ac507

Browse files
authored
Improved italian phone numbers (#950)
1 parent 3593446 commit f7ac507

File tree

3 files changed

+61
-13
lines changed

3 files changed

+61
-13
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
- Removed domain `gmail.com.au` from `Provider\en_AU\Internet` (#886)
66
- Refreshed ISO currencies (#919)
7-
-
7+
- Improved italian phone number formats
8+
89
## [2024-11-09, v1.24.0](https://github.com/FakerPHP/Faker/compare/v1.23.1..v1.24.0)
910

1011
- Fix internal deprecations in Doctrine's populator by @gnutix in (#889)

src/Faker/Provider/it_IT/PhoneNumber.php

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,35 @@
44

55
class PhoneNumber extends \Faker\Provider\PhoneNumber
66
{
7+
/**
8+
* @see https://en.wikipedia.org/wiki/Telephone_numbers_in_Italy
9+
*/
710
protected static $formats = [
8-
'+## ### ## ## ####',
9-
'+## ## #######',
10-
'+## ## ########',
11-
'+## ### #######',
12-
'+## ### ########',
13-
'+## #### #######',
14-
'+## #### ########',
15-
// According to http://it.wikipedia.org/wiki/Prefisso_telefonico#Elenco_degli_indicativi_in_Italia.2C_a_San_Marino_e_nel_Vaticano
16-
'0## ### ####',
17-
'+39 0## ### ###',
18-
'3## ### ###',
19-
'+39 3## ### ###',
11+
// Landline numbers
12+
'0%# ### ###',
13+
'0%# ### ####',
14+
'02 #### ###', // Milan
15+
'02 #### ####',
16+
'06 #### ###', // Rome
17+
'06 #### ####',
18+
19+
// Mobile numbers
20+
'3%# ### ####',
21+
22+
// International formats
23+
'+39 0%# ### ###',
24+
'+39 0%# ### ####',
25+
'+39 02 #### ###',
26+
'+39 02 #### ####',
27+
'+39 06 #### ###',
28+
'+39 06 #### ####',
29+
'+39 3%# ### ####',
30+
];
31+
32+
protected static $e164Formats = [
33+
'+390%#######',
34+
'+390%########',
35+
'+393%#######',
36+
'+393%########',
2037
];
2138
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace Faker\Test\Provider\it_IT;
4+
5+
use Faker\Provider\it_IT\PhoneNumber;
6+
use Faker\Test\TestCase;
7+
8+
final class PhoneNumberTest extends TestCase
9+
{
10+
public function testPhoneNumber(): void
11+
{
12+
for ($i = 0; $i < 100; ++$i) {
13+
$number = $this->faker->phoneNumber();
14+
self::assertMatchesRegularExpression('/^(((\+39 )?((3[1-9]\d)|(0[1-9]\d{0,1})) \d{3,4} \d{3,4})|((\+39)?(0|3)[1-9]\d{7,9}))$/', $number);
15+
}
16+
}
17+
18+
public function testE164PhoneNumberFormat(): void
19+
{
20+
for ($i = 0; $i < 10; ++$i) {
21+
$number = $this->faker->e164PhoneNumber();
22+
self::assertMatchesRegularExpression('/^\+39(0|3)[1-9]\d{7,9}$/', $number);
23+
}
24+
}
25+
26+
protected function getProviders(): iterable
27+
{
28+
yield new PhoneNumber($this->faker);
29+
}
30+
}

0 commit comments

Comments
 (0)