首页 > 解决方案 > 如何在php中过滤字符串

问题描述

我想制作网络应用程序:我发送地址。在后端,我们最常删除标题和不必要的详细信息,例如我的地址

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

然后发送到我的api并验证地址是否正确

这是我的第一个代码,但它发送到许多对 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);

标签: phplaravelapi

解决方案


我找到了我的遮阳篷

 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"));
        }

推荐阅读