PHP如何从字符串中获取单词并将它们存储在一个简单的数组中

时间:2012-11-11 08:52:40

标签: php regex arrays

我有这个字符串:

$s = "Cannes (06150-06400), Limoges (87000-87100-87280), 06000, Paris";

我只想在数组中存储单词,所以我尝试了这个:

$villes = explode(',', preg_replace('#\(([0-9\-]*)\)#', '', $s));

但结果我得到了这个数组:

array(4) {
          [0]=>
             string(7) "Cannes "
          [1]=>
             string(9) " Limoges "
          [2]=>
             string(7) "  06000" // This shouldn't be displayed in the array
          [3]=>
             string(6) " Paris"
         }

请问我如何修改正则表达式以使其按预期工作。感谢。

4 个答案:

答案 0 :(得分:3)

尝试:

<?php
$s = "Cannes (06150-06400), Limoges (87000-87100-87280), 06000, Paris";
preg_match_all("/[a-zA-Z]+/", $s, $villes);
var_dump($villes[0]);
?>

对于单个单词名称。 Var转储:

array(3) {
  [0]=>
  string(6) "Cannes"
  [1]=>
  string(7) "Limoges"
  [2]=>
  string(5) "Paris"
}

答案 1 :(得分:1)

尝试

$arr = preg_split('/\s*\(?[\d\-\s]*\)?\s*,\s*/', $s, -1, PREG_SPLIT_NO_EMPTY);
var_dump($arr);

输出

array(3) {
  [0] =>
  string(6) "Cannes"
  [1] =>
  string(7) "Limoges"
  [2] =>
  string(5) "Paris"
}

答案 2 :(得分:0)

preg_match( '/[a-zA-Z\-\']+/', $s, $words );
var_dump( $words[0] );

答案 3 :(得分:0)

你可以使用数组作为结果。

$arr=explode(' ' , $s);
print_r($arr);