php - 如何在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);
解决方案
我找到了我的遮阳篷
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"));
}
推荐阅读
- python - 重载 __setattr__ 和 __getattr__ 方法来阻止动态添加
- python - Folium(具有不同数据源的地图)
- reactjs - 有没有办法明确设置 React Final-Form 脏?
- kotlin - 检查 Kotlin 不可变列表中的值
- javascript - 如何创建一个独立的、普通的 javascript 缩小版的电容器社区 http 模块示例
- python - 无法安装 pip install sphinxcontrib-openapi - “默认为用户安装,因为普通站点包不可写”
- java - 工件演示:war:java.lang.Exception:{“WFLYCTL0412:未安装的必需服务:”=>
- sql - R:带有接受 Excel 列表(列)的 where 语句的 dbGetQuery 函数
- python-3.x - 如何在脚本中使用标志?
- reactjs - 如何在反应中通过 onClick 获取卡 ID?