Regular expressions are a powerful tool for examining and modifying text. preg_match is a powerful function of PHP that performs a regular expression match. Let’s have a short look on the syntax of preg_match before digging some interesting, practical and useful examples.
Syntax of preg_match
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
As my focus of this post is to share handy and useful examples of preg_match, so i am not going to discuss about the arguments of preg_match in detail. But i am sure you will learn them with the following examples professionally.
1. Find a String in a String
Find a string in a string can be done very easily by preg_match. Let’s have a look at the following two examples.
Useful Tip
The "i" after the pattern delimiter indicates a case-insensitive search
/*
|---------------------
| Case Sensitive Search
|---------------------
*/
if ( preg_match("/cool/", "I love to share Cool things that help others. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
echo "<br />";
/*
|---------------------
| Case Insensitive Search
|---------------------
*/
if ( preg_match("/cool/i", "I love to share Cool things that help others. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
Output
Output of above examples will be,
A match was not found.
A match was found.
2. Find a Word in a String
Find a word in a string is a hot and regular requirement in the php development. PHP beautifully provides this solution and we will achieve this task by the following two examples of preg_match.
Useful Tip
The "\b" in the pattern indicates a word boundary, so only the distinct
/*
|---------------------
| Word "profession" is matched, and not a word partial like "professional" or "professionalism"
|---------------------
*/
if ( preg_match("/\bprofession\b/i", "I am Software Engineer by profession. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
echo "<br />";
/*
|---------------------
| Word "profession" is matched, and not a word partial like "professional" or "professionalism"
|---------------------
*/
if ( preg_match("/\bprofession\b/i", "My professional ethic is sharing. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
Output
Output of above examples will be,
A match was found.
A match was not found.
3. Find Domain Name from URL
PHP developers often require to find a domain name from URL. preg_match provides a very easy solution. Let’s have a look into following examples.
Useful Tip
If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
/*
|---------------------
| Get host name from URL
|---------------------
*/
preg_match( '@^(?:http://)?([^/]+)@i', "http://www.tutorialchip.com/category/php/", $matches );
$host = $matches[1];
echo "Host name is: " . $host;
echo "<br />";
/*
|---------------------
| Get last two segments of host name
|---------------------
*/
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Domain name is: " . $matches[0];
Output
Output of above examples will be,
1
2
Host name is: www.tutorialchip.com
Domain name is: tutorialchip.com
4. Valid IP Address Check
preg_match makes the validity of IP address very easy. Let’s have a look into the following method which returns the validity of IP address professionally.
Useful Tip
Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.
/*
|---------------------
| Valid IP Method
|---------------------
*/
function get_valid_ip( $ip ) {
return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" .
"(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip );
}
/*
|---------------------
| Valid IP Example
|---------------------
*/
$ip = "192.168.1.1";
if ( get_valid_ip( $ip ) ) {
echo $ip . " is valid.";
}
echo "<br />";
/*
|---------------------
| Invalid IP Example
|---------------------
*/
$ip = "256.168.1.1";
if ( ! get_valid_ip( $ip ) ) {
echo $ip . " is not valid.";
}
Output
Output of above examples will be,
1
2
192.168.1.1 is valid.
256.168.1.1 is not valid.
5. US Phone Number Format Example
Getting a US phone number format is a tough task as user may input phone number in different formats. Let’s have a look at the power of preg_match. You will notice a usage of preg_replace for the sake of getting US phone number format.
/*
|---------------------
| US Phone Number Format Regex
|---------------------
*/
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
.'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
.'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
/*
|---------------------
| Different Formats
|---------------------
*/
$formats = array(
'520-628-4539', '520.628.4539', '5206284539' ,
'520 628 4539', '(520)628-4539', '(520) 628-4539',
'(520) 628 4539', '520-628.4539', '520 628-4539',
'(520)6284539', '520.628-4539', '15206284539',
'1 520 628 4539', '1.520.628.4539', '1-520-628-4539',
'520-628-4539 ext.123', '520.628.4539 EXT 123 ', '5206284539 Ext. 5889',
'520 628 4539 ext 8', '(520) 628-4539 ext. 456', '1(520)628-4539'
);
/*
|---------------------
| Let's Format Them
|---------------------
*/
foreach( $formats as $phoneNumber ) {
if( preg_match($regex, $phoneNumber) ) {
echo "Phone Number Matched " . $phoneNumber . " - US Format: " . preg_replace($regex, '($1) $2-$3 ext. $4', $phoneNumber);
echo "<br />";
}
}
Output
Output of above examples will be,
Phone Number Matched 520-628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520.628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 5206284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520)628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520) 628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520) 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520-628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520 628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520)6284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520.628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 15206284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1 520 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1.520.628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1-520-628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520-628-4539 ext.123 - US Format: (520) 628-4539 ext. 123
Phone Number Matched 5206284539 Ext. 5889 - US Format: (520) 628-4539 ext. 588
Phone Number Matched 520 628 4539 ext 8 - US Format: (520) 628-4539 ext. 8
Phone Number Matched (520) 628-4539 ext. 456 - US Format: (520) 628-4539 ext. 456
Phone Number Matched 1(520)628-4539 - US Format: (520) 628-4539 ext.
6. Valid Email Address Regex
Email address validation is a regular requirement of PHP developers. Let’s see at following example.
Useful Tip
Because making a truly correct email validation function is harder than one may think, consider using with pure PHP through the filter_var function.
/*
|---------------------
| Valid Email Address Regex
|---------------------
*/
function get_valid_email( $email ) {
$regex = '/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i';
return preg_match($regex, trim($email), $matches);
}
/*
|---------------------
| Different Emails
|---------------------
*/
$emails = array(
'my.name@gmail.com',
'another@gmail.co.uk',
'best@yahoo',
'hellomsn.net',
'long@123.org',
'123.me.you@ymail.com',
'miss@yahoo.',
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $emails as $email ) {
if( get_valid_email( $email ) ) {
echo "Valid Email: " . $email;
}
else {
echo "Invalid Email: " . $email;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid Email: my.name@gmail.com
Valid Email: another@gmail.co.uk
Invalid Email: best@yahoo
Invalid Email: hellomsn.net
Valid Email: long@123.org
Valid Email: 123.me.you@ymail.com
Invalid Email: miss@yahoo.
Out of the Box: Email Address Validation with PHP filter_var function
Let’s see at following example of email address validation with PHP through the filter_var function.
/*
|---------------------
| Valid Email Address filter_var
|---------------------
*/
function get_valid_email( $email ) {
return filter_var( $email, FILTER_VALIDATE_EMAIL );
}
/*
|---------------------
| Different Emails
|---------------------
*/
$emails = array(
'my.name@gmail.com',
'another@gmail.co.uk',
'best@yahoo',
'hellomsn.net',
'long@123.org',
'123.me.you@ymail.com',
'miss@yahoo.',
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $emails as $email ) {
if( get_valid_email( $email ) ) {
echo "Valid Email: " . $email;
}
else {
echo "Invalid Email: " . $email;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid Email: my.name@gmail.com
Valid Email: another@gmail.co.uk
Invalid Email: best@yahoo
Invalid Email: hellomsn.net
Valid Email: long@123.org
Valid Email: 123.me.you@ymail.com
Invalid Email: miss@yahoo.
7. Validate URL Regular Expression
We can use preg_match for the validation of any type of URL. Let’s have a look into the code snippet of PHP URL Valdation.
/*
|---------------------
| Validate URL Regular Expression
|---------------------
*/
function get_valid_url( $url ) {
$regex = "((https?|ftp)\:\/\/)?"; // Scheme
$regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass
$regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP
$regex .= "(\:[0-9]{2,5})?"; // Port
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path
$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query
$regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor
return preg_match("/^$regex$/", $url);
}
/*
|---------------------
| Different URLs
|---------------------
*/
$urls = array(
'https://thiscode4u.blogspot.com/',
'https://thiscode4u.blogspot.com/php-csv-parser-class/#tab-description',
'http://www.google.com/search?hl=en&source=hp&biw=1366&bih=515&q=chip+zero+wordpress+theme&aq=f&aqi=&aql=&oq=',
'ftp://some.domaon.co.uk/',
'wwwhellocom',
'tcp://www.domain.org',
'http://wordpress.org',
'https:www.secure.net',
'https://.com',
'https://www.lock.cc',
'https://thiscode4u.blogspot.com'
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $urls as $url ) {
if( get_valid_url( $url ) ) {
echo "Valid URL: " . $url;
}
else {
echo "Invalid URL: " . $url;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid URL: https://thiscode4u.blogspot.com
Valid URL: https://thiscode4u.blogspot.comphp-csv-parser-class/#tab-description
Valid URL: http://www.google.com/search?hl=en&source=hp&biw=1366&bih=515&q=chip+zero+wordpress+theme&aq=f&aqi=&aql=&oq=
Valid URL: ftp://some.domaon.co.uk/
Invalid URL: wwwhellocom
Invalid URL: tcp://www.domain.org
Valid URL: http://wordpress.org
Invalid URL: https:www.secure.net
Valid URL: https://.com
Valid URL: https://www.lock.cc
Valid URL: https://thiscode4u.blogspot.com
Syntax of preg_match
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
As my focus of this post is to share handy and useful examples of preg_match, so i am not going to discuss about the arguments of preg_match in detail. But i am sure you will learn them with the following examples professionally.
1. Find a String in a String
Find a string in a string can be done very easily by preg_match. Let’s have a look at the following two examples.
Useful Tip
The "i" after the pattern delimiter indicates a case-insensitive search
/*
|---------------------
| Case Sensitive Search
|---------------------
*/
if ( preg_match("/cool/", "I love to share Cool things that help others. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
echo "<br />";
/*
|---------------------
| Case Insensitive Search
|---------------------
*/
if ( preg_match("/cool/i", "I love to share Cool things that help others. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
Output
Output of above examples will be,
A match was not found.
A match was found.
2. Find a Word in a String
Find a word in a string is a hot and regular requirement in the php development. PHP beautifully provides this solution and we will achieve this task by the following two examples of preg_match.
Useful Tip
The "\b" in the pattern indicates a word boundary, so only the distinct
/*
|---------------------
| Word "profession" is matched, and not a word partial like "professional" or "professionalism"
|---------------------
*/
if ( preg_match("/\bprofession\b/i", "I am Software Engineer by profession. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
echo "<br />";
/*
|---------------------
| Word "profession" is matched, and not a word partial like "professional" or "professionalism"
|---------------------
*/
if ( preg_match("/\bprofession\b/i", "My professional ethic is sharing. @lifeobject1") ) {
echo "A match was found.";
} else {
echo "A match was not found.";
}
Output
Output of above examples will be,
A match was found.
A match was not found.
3. Find Domain Name from URL
PHP developers often require to find a domain name from URL. preg_match provides a very easy solution. Let’s have a look into following examples.
Useful Tip
If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
/*
|---------------------
| Get host name from URL
|---------------------
*/
preg_match( '@^(?:http://)?([^/]+)@i', "http://www.tutorialchip.com/category/php/", $matches );
$host = $matches[1];
echo "Host name is: " . $host;
echo "<br />";
/*
|---------------------
| Get last two segments of host name
|---------------------
*/
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Domain name is: " . $matches[0];
Output
Output of above examples will be,
1
2
Host name is: www.tutorialchip.com
Domain name is: tutorialchip.com
4. Valid IP Address Check
preg_match makes the validity of IP address very easy. Let’s have a look into the following method which returns the validity of IP address professionally.
Useful Tip
Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.
/*
|---------------------
| Valid IP Method
|---------------------
*/
function get_valid_ip( $ip ) {
return preg_match("/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" .
"(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/", $ip );
}
/*
|---------------------
| Valid IP Example
|---------------------
*/
$ip = "192.168.1.1";
if ( get_valid_ip( $ip ) ) {
echo $ip . " is valid.";
}
echo "<br />";
/*
|---------------------
| Invalid IP Example
|---------------------
*/
$ip = "256.168.1.1";
if ( ! get_valid_ip( $ip ) ) {
echo $ip . " is not valid.";
}
Output
Output of above examples will be,
1
2
192.168.1.1 is valid.
256.168.1.1 is not valid.
5. US Phone Number Format Example
Getting a US phone number format is a tough task as user may input phone number in different formats. Let’s have a look at the power of preg_match. You will notice a usage of preg_replace for the sake of getting US phone number format.
/*
|---------------------
| US Phone Number Format Regex
|---------------------
*/
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
.'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
.'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
/*
|---------------------
| Different Formats
|---------------------
*/
$formats = array(
'520-628-4539', '520.628.4539', '5206284539' ,
'520 628 4539', '(520)628-4539', '(520) 628-4539',
'(520) 628 4539', '520-628.4539', '520 628-4539',
'(520)6284539', '520.628-4539', '15206284539',
'1 520 628 4539', '1.520.628.4539', '1-520-628-4539',
'520-628-4539 ext.123', '520.628.4539 EXT 123 ', '5206284539 Ext. 5889',
'520 628 4539 ext 8', '(520) 628-4539 ext. 456', '1(520)628-4539'
);
/*
|---------------------
| Let's Format Them
|---------------------
*/
foreach( $formats as $phoneNumber ) {
if( preg_match($regex, $phoneNumber) ) {
echo "Phone Number Matched " . $phoneNumber . " - US Format: " . preg_replace($regex, '($1) $2-$3 ext. $4', $phoneNumber);
echo "<br />";
}
}
Output
Output of above examples will be,
Phone Number Matched 520-628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520.628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 5206284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520)628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520) 628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520) 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520-628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520 628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched (520)6284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520.628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 15206284539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1 520 628 4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1.520.628.4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 1-520-628-4539 - US Format: (520) 628-4539 ext.
Phone Number Matched 520-628-4539 ext.123 - US Format: (520) 628-4539 ext. 123
Phone Number Matched 5206284539 Ext. 5889 - US Format: (520) 628-4539 ext. 588
Phone Number Matched 520 628 4539 ext 8 - US Format: (520) 628-4539 ext. 8
Phone Number Matched (520) 628-4539 ext. 456 - US Format: (520) 628-4539 ext. 456
Phone Number Matched 1(520)628-4539 - US Format: (520) 628-4539 ext.
6. Valid Email Address Regex
Email address validation is a regular requirement of PHP developers. Let’s see at following example.
Useful Tip
Because making a truly correct email validation function is harder than one may think, consider using with pure PHP through the filter_var function.
/*
|---------------------
| Valid Email Address Regex
|---------------------
*/
function get_valid_email( $email ) {
$regex = '/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i';
return preg_match($regex, trim($email), $matches);
}
/*
|---------------------
| Different Emails
|---------------------
*/
$emails = array(
'my.name@gmail.com',
'another@gmail.co.uk',
'best@yahoo',
'hellomsn.net',
'long@123.org',
'123.me.you@ymail.com',
'miss@yahoo.',
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $emails as $email ) {
if( get_valid_email( $email ) ) {
echo "Valid Email: " . $email;
}
else {
echo "Invalid Email: " . $email;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid Email: my.name@gmail.com
Valid Email: another@gmail.co.uk
Invalid Email: best@yahoo
Invalid Email: hellomsn.net
Valid Email: long@123.org
Valid Email: 123.me.you@ymail.com
Invalid Email: miss@yahoo.
Out of the Box: Email Address Validation with PHP filter_var function
Let’s see at following example of email address validation with PHP through the filter_var function.
/*
|---------------------
| Valid Email Address filter_var
|---------------------
*/
function get_valid_email( $email ) {
return filter_var( $email, FILTER_VALIDATE_EMAIL );
}
/*
|---------------------
| Different Emails
|---------------------
*/
$emails = array(
'my.name@gmail.com',
'another@gmail.co.uk',
'best@yahoo',
'hellomsn.net',
'long@123.org',
'123.me.you@ymail.com',
'miss@yahoo.',
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $emails as $email ) {
if( get_valid_email( $email ) ) {
echo "Valid Email: " . $email;
}
else {
echo "Invalid Email: " . $email;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid Email: my.name@gmail.com
Valid Email: another@gmail.co.uk
Invalid Email: best@yahoo
Invalid Email: hellomsn.net
Valid Email: long@123.org
Valid Email: 123.me.you@ymail.com
Invalid Email: miss@yahoo.
7. Validate URL Regular Expression
We can use preg_match for the validation of any type of URL. Let’s have a look into the code snippet of PHP URL Valdation.
/*
|---------------------
| Validate URL Regular Expression
|---------------------
*/
function get_valid_url( $url ) {
$regex = "((https?|ftp)\:\/\/)?"; // Scheme
$regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass
$regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP
$regex .= "(\:[0-9]{2,5})?"; // Port
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path
$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query
$regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor
return preg_match("/^$regex$/", $url);
}
/*
|---------------------
| Different URLs
|---------------------
*/
$urls = array(
'https://thiscode4u.blogspot.com/',
'https://thiscode4u.blogspot.com/php-csv-parser-class/#tab-description',
'http://www.google.com/search?hl=en&source=hp&biw=1366&bih=515&q=chip+zero+wordpress+theme&aq=f&aqi=&aql=&oq=',
'ftp://some.domaon.co.uk/',
'wwwhellocom',
'tcp://www.domain.org',
'http://wordpress.org',
'https:www.secure.net',
'https://.com',
'https://www.lock.cc',
'https://thiscode4u.blogspot.com'
);
/*
|---------------------
| Let's Check Them
|---------------------
*/
foreach( $urls as $url ) {
if( get_valid_url( $url ) ) {
echo "Valid URL: " . $url;
}
else {
echo "Invalid URL: " . $url;
}
echo "<br />";
}
Output
Output of above examples will be,
Valid URL: https://thiscode4u.blogspot.com
Valid URL: https://thiscode4u.blogspot.comphp-csv-parser-class/#tab-description
Valid URL: http://www.google.com/search?hl=en&source=hp&biw=1366&bih=515&q=chip+zero+wordpress+theme&aq=f&aqi=&aql=&oq=
Valid URL: ftp://some.domaon.co.uk/
Invalid URL: wwwhellocom
Invalid URL: tcp://www.domain.org
Valid URL: http://wordpress.org
Invalid URL: https:www.secure.net
Valid URL: https://.com
Valid URL: https://www.lock.cc
Valid URL: https://thiscode4u.blogspot.com
0 comments:
Post a Comment