ColorFormatRule.php
2 weeks ago
EmailFormatRule.php
2 weeks ago
NumberMaxRule.php
2 weeks ago
NumberMinRule.php
2 weeks ago
NumberStepRule.php
2 weeks ago
UrlFormatRule.php
2 weeks ago
ValidatorRule.php
2 weeks ago
ValueRegexRule.php
2 weeks ago
UrlFormatRule.php
27 lines
| 1 | <?php |
| 2 | |
| 3 | namespace WPDesk\FCF\Free\Validator\Rule; |
| 4 | |
| 5 | use WPDesk\FCF\Free\Validator\Error\InvalidUrlError; |
| 6 | |
| 7 | /** |
| 8 | * Checks that the URL value is valid. |
| 9 | */ |
| 10 | class UrlFormatRule implements ValidatorRule { |
| 11 | |
| 12 | /** |
| 13 | * {@inheritdoc} |
| 14 | */ |
| 15 | public function validate_value( string $value, array $field_data ) { |
| 16 | $url_path = parse_url( $value, PHP_URL_PATH ); |
| 17 | $encoded_path = array_map( 'urlencode', explode( '/', $url_path ) ); |
| 18 | $encoded_url = str_replace( $url_path, implode( '/', $encoded_path ), $value ); |
| 19 | |
| 20 | if ( ( $value === '' ) || filter_var( $encoded_url, FILTER_VALIDATE_URL ) ) { |
| 21 | return null; |
| 22 | } |
| 23 | |
| 24 | return new InvalidUrlError( $field_data, $value ); |
| 25 | } |
| 26 | } |
| 27 |