как отфильтровать строку в php - PullRequest
0 голосов
/ 26 января 2020

я хочу сделать веб-приложение: я отправляю адрес. В бэкэнде мы больше всего удаляем заголовок и ненужные детали для экспы, мой адрес

Home: Tehran،enqelab str،khark str(Call me)

, и после этого отправляем на мой API и проверяем адрес на true или нет

это мой первый код, но его отправляют на многие запросы к API

public function check($id)
    {
        $address = Address::find($id);
        $addres = $address->Address;

       $array = $this->ValidateArray($address->Address);
        $FinalAddress = implode(" ", $array);
        echo $FinalAddress;
        echo "<br/><br/><br/><br/><br/>";
        $response = $this->CallApi($FinalAddress);
        while ($response == null) {
            array_splice($array, -1);
            $FinalAddress = implode(" ", $array);
            $response = $this->CallApi($FinalAddress);
        }
        while ($response->num < 1) {
            array_splice($array, -1);
            $FinalAddress = implode(" ", $array);
            $response = $this->CallApi($FinalAddress);
        }
        $address->FoundedAddress = $response->result[0]->title;
        $address->Status = 2;
        $address->save();
        echo  $response->result[0]->title;
        echo "<br/><br/><br/><br/>";
        echo $FinalAddress;
        echo "<br/><br/><br/><br/>";
        var_dump($response);
    }

 public function ValidateArray($address)
    {
        $first = str_replace("،", " ", $address);
        $second = str_replace("-", " ", $first);
        $third = str_replace("(", " ", $second);
        $Fourth = str_replace(":", " ", $third);
        $Final = str_replace(")", " ", $Fourth);
        $array = explode(" ", $Final);
        return $array;
    }

API функции

  $curl = curl_init();
        $text = urlencode(trim($address));
        curl_setopt_array($curl, array(
            CURLOPT_URL => "send $text to api",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "GET",
            CURLOPT_HTTPHEADER => array(
                "Content-Type: application/json",
                "X-Requested-With: XMLHttpRequest"
            ),
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        return json_decode($response);

Ответы [ 2 ]

0 голосов
/ 26 января 2020

я нашел свой awnser

 public function check($id)
    {
//find addres from dataabase
        $address = Address::find($id);
        $Address = $address->Address;
//check for its address or no
        if (strpos($Address, 'STR') || strpos($Address, 'S ') || strpos($Address, "Alley") || strpos($Address, "A ") || strpos($Address, 'number ') !== false) {
//validate address and remove unnecessary details 
            $FinalAddress = $this->ValidateArray($Address);
//call api
            $response = $this->CallApi($FinalAddress);
//update database
            $address->FoundedAddress = $response->result[0]->title;
            $address->Status = 2;
            $address->save();
            echo "Searched Address :‌ ". $FinalAddress;
            echo "<br/><br/><br/><br/><br/>";
            echo "Founded Address :‌ " . $response->result[0]->title;
        }else{
            echo "Address Not Valid";
        }
    }

и функцию проверки

//remove ، from address
if (strpos($address, "،")) {
            $address = explode("،", $address);
            $address = implode(" ", $address);
        }
//remove - from address
        elseif (strpos($address, "-")) {
            $address = explode("-", $address);
            $address = implode(" ", $address);
        }
remove title and : from address
        if (strpos($address, ":")) {
            $address = strstr($address, ':');
            $address = str_replace(":", "", $address);
        }
//we found the (anyting) and remove that
        if (strpos($address , ")") ){
            $start = "(";
            $end = ")";
            $replace = " ";
            $pos1 = strpos($address , $start);
            $pos2 = strpos($address , $end , $pos1);
            $lenght = $pos2 + strlen($pos1) - $pos1;
            $address = substr_replace($address , $replace , $pos1 , $lenght);
        }
//remove number from address
        if (strpos($address, "number")) {
            $address = substr($address, 0, strpos($address, "nmber"));
        }
//remove floor from address
        if (strpos($address, "floor")) {
            $address = substr($address, 0, strpos($address, "floor"));
        }
0 голосов
/ 26 января 2020

проверьте код ниже, который отправляет запрос более одного раза.

while ($response == null) {
    array_splice($array, -1);
    $FinalAddress = implode(" ", $array);
    $response = $this->CallApi($FinalAddress);
}
while ($response->num < 1) {
    array_splice($array, -1);
    $FinalAddress = implode(" ", $array);
    $response = $this->CallApi($FinalAddress);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...