使用数组分隔字符串

Dan*_*Dan 2 php arrays string

我有一个字符串,其中包含一个名称后跟一个城镇.所以喜欢John Smith Smithville.

我需要将它分成两个变量(name,town)或一个数组.

我有一系列城镇名称要检查.什么是在字符串中找到城镇名称后将字符串分成两个的最佳方法?

$string = "John Smith Smithville";
$townlist = array("smithville", "janeville", "placeville");

if(contains($string,$townlist))
{
//separate into two variables

}
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 6

这使用正则表达式来做到这一点.

  • 为正则表达式获取城镇名称的转义版本.确保你的名字都没有城镇名称/,或者我们不能使用array_map()(preg_quote()第二个参数是分隔符).
  • 加入他们的管道|.
  • 字符串构建并运行正则表达式.
  • $matches会的名称1,并和镇作为2指标.

PHP

$string = 'John Smith Smithville';
$townlist = array('smithville', 'janeville', 'placeville');

if (preg_match_all(
      '/^(.*)\s(' . implode('|', array_map('preg_quote', $townlist)) . ')$/i',
      $string,
      $matches
))
{
    var_dump($matches);
}
Run Code Online (Sandbox Code Playgroud)

有用!

产量

array(3) {
  [0]=>
  array(1) {
    [0]=>
    string(21) "John Smith Smithville"
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "John Smith"
  }
  [2]=>
  array(1) {
    [0]=>
    string(10) "Smithville"
  }
}
Run Code Online (Sandbox Code Playgroud)