API数据的条件区分大小写

时间:2018-08-20 16:51:13

标签: php html api case-sensitive

我是API集成和PHP的新手。我最近将VIN解码器集成到我的应用中。在输入框中输入车辆的VIN,单击提交,然后返回有关车辆的信息。

我一直在按自己的喜好格式化数据输出。特别是车辆的制造数据。 Make数据全部大写。例如,奥迪输出为AUDI。为了解决这个问题,我添加了以下代码:

$data = array();
foreach ($json['Results'][0] as $k => $v){

  if ($k == "Make"){
    $v = strtolower($v);
    $v = ucwords($v);

  }
}

在此修订版中,奥迪以奥迪的形式出现,这很棒。我遇到了宝马和梅赛德斯·奔驰等品牌的问题。加上这些,它们分别以宝马和梅赛德斯-奔驰的名字出现。我试图添加简单的if语句来解决此问题,但是我一直没有成功。

关于如何为我创建的大写规则创建例外的任何想法?

这是我的html代码,一个简单的输入框和提交按钮。

<!DOCTYPE html>
<html>

<head>
<title>VIN Decoder API Test</title>

<style type="text/css">
input,button {width: 200px;display: block;margin-left: auto;margin-right: auto;}
button {width: 100px;background-color: darkgray;}
</style>

</head>

<body>

    <form action="processvin4.php" method="post">

    <input type="text" id="b12" placeholder="Enter VIN" name="b12" maxlength="100"/>
    <br>
    <button id="submit_btn">Submit</button>

  </form>

  <br>
  <br>

</body>
</html>

我的php代码尝试了if语句:

<?php

$vin = $_POST["b12"];

if ($vin) {
$postdata = http_build_query([
        'format' => 'json',
        'data' => $vin
    ]
);
$opts = [
    'http' => [
        'method' => 'POST',
        'content' => $postdata
    ]
];

$apiURL = "https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVINValuesBatch/";
$context = stream_context_create($opts);
$fp = fopen($apiURL, 'rb', false, $context);
$line_of_text = fgets($fp);
$json = json_decode($line_of_text, true);
fclose($fp);

$data = array();
foreach ($json['Results'][0] as $k => $v){
  if ($k == "Make"){
    $v = strtolower($v);
    $v = ucwords($v);
    if ($v == "BMW"){
      $v = "BMW";
    }
    if ($v == "MERCEDES-BENZ"){
      $v = "Mercedes-Benz";
    }
  }

  if (!empty($v)) {
    $data[$k] = ($k).": ".($v);
  }
}


  echo $data['Make']. '<br />';


  }

else {
echo 'No Vin Inputted';
  }




?>

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

要简单地解决您的问题,只需将strtolower放在“ else”中

if ($k == "Make"){
  if ($v == "BMW"){
    $v = "BMW";
  }
  else if ($v == "MERCEDES-BENZ"){
    $v = "Mercedes-Benz";
  }
  else {
    $v = strtolower($v);
    $v = ucwords($v);
  }
}

答案 1 :(得分:1)

只需创建带有异常的数组并从中替换:

$v = strtolower($v);

$nameExceptions = [
    'bmw' => 'BMW',
    'mercedes-benz' => 'Mercedes-Benz'
];

if(isset($nameExceptions[$v])) {
    $v = $nameExceptions[$v];
}
else {
    $v = ucwords($v);
}

答案 2 :(得分:0)

您的if语句将永远无法工作,您要在检查之前转换文本,交换订单并使之成为elseif语句:

if ($k == "Make"){
    $v = strtolower($v);
    $v = ucwords($v);
    if ($v == "BMW"){
      $v = "BMW";
    }
    if ($v == "MERCEDES-BENZ"){
      $v = "Mercedes-Benz";
    }
  }

成为:

if ($k == "Make"){
    if ($v == "BMW"){
      $v = "BMW";
    }
    else if ($v == "MERCEDES-BENZ"){
      $v = "Mercedes-Benz";
    }else{
      $v = strtolower($v);
      $v = ucwords($v);
    }
  }