使用php从大文本中提取城市名称

使用php从大文本中提取城市名称,php,Php,你好,我有个问题。假设我有一个长字符串,其中包括其他单词之间的国家名称 $str = "Department of Cardiology, West China Hospital, Sichuan University, No. 37 GuoXue Street, Boston,United states of america." 我的目标是提取它的所有国家名称。我是通过以下步骤实现的 $str= str_replace(',', ' ', $str); $var_array = preg_s

你好,我有个问题。假设我有一个长字符串,其中包括其他单词之间的国家名称

$str = "Department of Cardiology, West China Hospital, Sichuan University, No. 37 GuoXue Street, Boston,United states of america."
我的目标是提取它的所有国家名称。我是通过以下步骤实现的

$str= str_replace(',', ' ', $str);
$var_array = preg_split('/(\|,|\.|-|\(|\)| )/', $str);
foreach($var_array as$data)
{
    echo $data;
    echo "<br/>";
}

但正如你们所看到的,我不能用多个词来称呼国家,例如“美利坚合众国”,因为它们是分开的。当然,手动修复此问题不是一个选项,因为我的真实数据集相当大。

您可以尝试从相反方向遍历字符串,即以逗号分隔的相反顺序。因为如果你使用的是谷歌定位api,那么最后总会有国家名称

所以你可以这样做:-

$address=array\u reverse($str)

$address=分解(“,”,$address)

可能是逗号字符吧?这是不可能实现的,因为理论上任何单词都可以是国家/城市的名称。您需要将字符串与要匹配的所有国家/城市的现有数据库进行交叉引用。是否有任何特定的字符串模式允许您明确地将其部分标识为国家/地区?例如,最后一个
之后的所有内容,
是国家/地区吗?如果不是……这是一个相当棘手的问题。@Ruben感谢您的友好回复,但主要问题是在某些情况下会有空格而不是逗号。@thepiterdc我如何将整个字符串与数据库表匹配。请您解释一下。我已经试过了。但是没有国家名称总是出现的静态模式在最后一个逗号之后。@YugamUppal抱歉,兄弟,很难找到确切的国家名称,因为它的位置不固定。
Department
of
Cardiology

West
China
Hospital
Sichuan
University

No

37
GuoXue
Street

Boston
United
states
of
america