Я использую API, который извлекает информацию о компаниях во Франции и выводит пользовательскую JSON эту информацию. Вы введете название компании и вернете все данные компаний, которые соответствуют поисковому слову. Эта система не на 100% идеальна, поскольку она также возвращает много компаний, которые почти соответствуют стоимости поиска.Проверка наличия строки в нем в PHP
Например, я ищу «abc», и в ответ я также получаю компании с именем «abl».
Поэтому я хотел отфильтровать их, прежде чем помещать их в массив результатов.
public function transform($obj){
//The $obj is the information retrieved from the API in JSON.
$data = json_decode($obj, true);
$retval = array();
//The '$name = $data["params"]["name"];' is the name the API used as search parameter.
$name = $data["params"]["name"];
foreach ($data["companies"] as $item){
//The '$item["names"]["best"]' is the name of the company.
if(strpos($item["names"]["best"], $name) !== false){
$retval[] = [
"Company name" => $item["names"]["best"],
"More info" => array(
"Denomination" => $item["names"]["denomination"],
"Commercial name" => $item["names"]["commercial_name"]
),
"Siren number" => $item["siren"],
"Street" => $item["address"],
"Zip code" => $item["postal_code"],
"City" => $item["city"],
"Vat_number" => $item["vat_number"],
"Established on" => $item["established_on"]
];
}
}
return json_encode($retval, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
}
Но даже когда я сравнивала строки перед тем, как создать объект массива, он по-прежнему возвращает эти «неправильные» компании. У кого-то есть идея, что я делаю неправильно? Любая помощь будет принята с благодарностью!
Edit: В случае, если кто-то хочет знать, какие API я использую, вот ссылка: https://firmapi.com/
Это может помочь вам http://stackoverflow.com/questions/16283837/find-exact-string-inside-a-string – Farhan