php7中国家名称的输入验证

php7中国家名称的输入验证,php,php-7,Php,Php 7,我正在编写一个PHP脚本,它从命令行获取输入。它需要两个字符串作为两个国家的名称,如 - php myphp.php japan china (command line) php代码: if(PHP_SAPI == 'cli') { $first = $argv[1]; $second = $argv[2]; print_r($argv); } 在这里,$first和$second被传递给其他函数以进一步处理数据。在传递这些参数之前,我需要检查它们是否是有效的国家名

我正在编写一个PHP脚本,它从命令行获取输入。它需要两个字符串作为两个国家的名称,如

- php myphp.php japan china (command line) 
php代码:

if(PHP_SAPI == 'cli') {
    $first = $argv[1];
    $second = $argv[2];
    print_r($argv);
}
在这里,$first和$second被传递给其他函数以进一步处理数据。在传递这些参数之前,我需要检查它们是否是有效的国家名称

但是,当国家名称由两个字符串组成(如韩国)时,它不会将整个国家名称作为一个输入

- php myphp.php japan south korea (command line)

Array
(
    [0] => myphp.php
    [1] => china
    [2] => south
    [3] => korea
)
我如何输入一个名称有两个或三个字符串的国家?e、 g.在上述数组中,$argv[1]应为“中国”,而$argv[2]应为“韩国”


非常感谢

您只需将这两个国家的名称用引号括起来即可

- php myphp.php 'japan' 'south korea' (command line)
Array
(
    [0] => cli.php
    [1] => japan
    [2] => south korea
)
或者,如果您想使用逗号,则需要在
myphp.php

// concatenate the relevant arguments into one string
$arguments = '';
for ($i = 1; $i < count($argv); $i++) {
  $arguments .= $argv[$i] . ' ';
}
// explode on comma
$arguments = explode(', ', $arguments);

print_r($arguments);

您只需将这两个国家的名称用引号括起来即可

- php myphp.php 'japan' 'south korea' (command line)
Array
(
    [0] => cli.php
    [1] => japan
    [2] => south korea
)
或者,如果您想使用逗号,则需要在
myphp.php

// concatenate the relevant arguments into one string
$arguments = '';
for ($i = 1; $i < count($argv); $i++) {
  $arguments .= $argv[$i] . ' ';
}
// explode on comma
$arguments = explode(', ', $arguments);

print_r($arguments);

定义“国家名称”。“美利坚合众国”、“美国”、“美国”、“美国”和“美国”都有效吗?许多国家有多个事实上的名称。例如,“韩国”实际上不是一个国家,它的官方名称是“大韩民国”。这就是为什么用逗号或其他分隔符分隔输入是最好的方法。另一种方法是制作一个非常难看的正则表达式,它可以挑出匹配项,这使得事情变得复杂,因为一些国家的名称是其他国家名称的一部分,比如“苏丹”和“南苏丹”。在你有某种代码之前,你不会真的有堆栈溢出问题。这需要在技术上更加具体,而且您现在所拥有的离解决方案还有很长的路要走,所以您需要进行更多的实验。我在这里提出了一些值得研究的建议,但还有其他同样有效的方法。@tadman,问题已编辑again@Arleigh嗨,问题已经更新了。我正在寻找一种用逗号分隔$argv[1]和$argv[2]的方法。如果你有任何想法,请告诉我好的“国家名称”。“美利坚合众国”、“美国”、“美国”、“美国”和“美国”都有效吗?许多国家有多个事实上的名称。例如,“韩国”实际上不是一个国家,它的官方名称是“大韩民国”。这就是为什么用逗号或其他分隔符分隔输入是最好的方法。另一种方法是制作一个非常难看的正则表达式,它可以挑出匹配项,这使得事情变得复杂,因为一些国家的名称是其他国家名称的一部分,比如“苏丹”和“南苏丹”。在你有某种代码之前,你不会真的有堆栈溢出问题。这需要在技术上更加具体,而且您现在所拥有的离解决方案还有很长的路要走,所以您需要进行更多的实验。我在这里提出了一些值得研究的建议,但还有其他同样有效的方法。@tadman,问题已编辑again@Arleigh嗨,问题已经更新了。我正在寻找一种用逗号分隔$argv[1]和$argv[2]的方法。如果您有任何想法,请告诉我。也可以是
cli.php japan“south korea”
cli.php japan south\korea
,因为这两种方法都正确地逃离了空间。也可以是
cli.php japan“south korea”
cli.php japan south\korea
,因为这两种方法都正确地逃离了空间。