从PHP中的字符串中提取地址的一部分

时间:2017-04-22 11:24:33

标签: php substring

我创建了一个html表单,您可以在其中输入单个字符串中的街道地址。如何在PHP中提取街道号码,街道名称和街道类型(新月,道路,街道等)?我不确定他们将输入的字符串的长度,它可能无法提取正确的信息。

请帮助我,因为我是PHP的新编码。

以下是我的代码:

$address = $_POST["address"];

echo "Your address is: $address <br>";

$addressSubstring = substr($address,0 , 15);

echo "Address: $addressSubstring <br>";

$strNumber = substr($addressSubstring, 0, 2);

$strName = substr($addressSubstring, 2, 8);

$strType = substr($addressSubstring, 8, 15);

echo "Your street number is: $strNumber <br>";
echo "Your street name is: $strName <br>";
echo "Your street type is: $strType <br>"

2 个答案:

答案 0 :(得分:1)

您不能依赖于在代码中获取固定位置和长度的子字符串,因为它们每次都会更改。

不使用任何API或AI,您可以做的最好的事情是创建一个包含道路类型(及其缩写)的数组,并检查字符串中是否有任何单词。

为此,您可以对每个单词或匹配的正则表达式使用 strpos

然后你可以从字符串中删除该单词,并再次使用strpos获取第一个空格的位置。然后使用该位置获取空格(街道号)前的子字符串和空格后的子字符串(街道名称)。

答案 1 :(得分:0)

请记住道路类型是“crescent | road | street”:

使用正则表达式可以解决问题:

#Basic configuration
global
    log 127.0.0.1 local0
    maxconn 4096
    stats socket /tmp/haproxy

defaults
    log     global
    option  dontlognull
    retries 3
    option  redispatch
    timeout client 5s
    timeout server 5s
    timeout connect 5s

frontend forwarder
    bind *:1025
    mode http
    default_backend proxy

backend proxy
     option httpclose
     option http_proxy
     mode http