验证非拉丁网址

时间:2012-06-26 17:17:28

标签: php validation url unicode filtering

我的客户端要求验证用户输入的包含非拉丁字符的网址。例如:

  • http://uk.wikipedia.org/wiki/Фотосинтез
  • http://презитент.рф

是否有人有正则表达式来验证此类网址?

或者PHP中有一种方法可以轻松地对非拉丁语URL部分进行URL编码。例如:http://uk.wikipedia.org/wiki/Фотосинтез - > http://uk.wikipedia.org/wiki/%D0%A4%D0%BE%D1%82%D0%BE%D1%81%D0%B8%D0%BD%D1%82%D0%B5%D0%B7和反之?

它有意义吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

php.net warns表示parse_url“并不意味着验证给定的URL,它只会将其分解为上面列出的部分。”如果这是可以接受的,它似乎(或多或少)使用非拉丁字符:

~ visitor$ cat parse.php 
<?php
$parsed = parse_url( 'http://uk.wikipedia.org/wiki/Фотосинтез' );
print_r( $parsed );
?>

~ visitor$ php parse.php 
Array
(
    [scheme] => http
    [host] => uk.wikipedia.org
    [path] => /wiki/Фо?_о?_ин?_ез
)