我有一个格式如下的字符串:city (Country)
和我想将城市和国家分开,并将值存储在两个不同的变量中。
我尝试了以下方法,它可以储存城市,但不能储存国家。
<?php
$citysearch = "Madrid (Spain)";
echo $citysearch;
$citylen = strlen( $citysearch );
for( $i = 0; $i <= $citylen; $i++ )
{
$char = substr( $citysearch, $i, 1 );
if ($char <> "(")
{
echo $city. "<br>";
$city = $city .$char;
if ($char == " ")
{
break;
}
}
if ($char <> ")")
{
echo $country. "<br>";
$country = $country .$char;
if ($char == ")")
{
break;
}
}
}
echo "This is the city:" .$city;
echo "This is the country:" . $country;;
?>
如有任何帮助,我们将不胜感激。
您可以使用一个简单的正则表达式来解决此问题:
preg_match('/^('w*)'s'(('w*)')$/', $citysearch, $matches);
var_dump($matches);
echo "city: ".$matches[1]."'n";
echo "country: ".$matches[2]."'n";
更新:
或者不带正则表达式:
$citysearch = 'Madrid (Spain)';
$pos = strpos($citysearch, ' (');
$city = substr($citysearch, 0, $pos);
$country = substr($citysearch, $pos + 2, -1);
在php:中使用explode
<?php
$citysearch = "Madrid (Spain)";
$myArray = explode('(', $citysearch);
print($myArray[0]);
print(rtrim($myArray[1], ")"));
?>
使用preg_split
:
<?php
$citysearch = "Madrid (Spain)";
$iparr = preg_split ("/'(/", rtrim($citysearch, ")"));
print($iparr[0]);
print($iparr[1]);
?>
输出:
Madrid Spain
我认为您应该使用这个简单的示例:
只需使用explode
函数分解字符串,然后将城市存储在$city
变量中,将国家存储在$country
变量中。
分解字符串后,您将得到一个数组,其中索引0中的值为Madrid
,索引1为(Spain)
。因此,使用$div[0]
很容易获得城市,但对于国家,您需要使用一个名为trim
的空间函数来清除()
。并使用CCD_ 12获取国家。
示例:
$citysearch = "Madrid (Spain)";
$div = explode(" ", $citysearch);
echo $city = $div[0]; //Madrid
echo $country = trim($div[1], "()"); //Spain
使用爆炸
$citysearch = "Madrid (Spain)";
$ar =explode("(",$citysearch,2);
$ar[1]=rtrim($ar[1],")");
$city = $ar[0];
$country = $ar[1];