web-dev-qa-db-ja.com

コンマと-(ハイフン)を使用した複数の分解文字

すべての文字列をexplodeしたい:

  1. 空白(\ n\tなど)
  2. コンマ
  3. ハイフン(小ダッシュ)。このように>>-

しかし、これは機能しません:

$keywords = explode("\n\t\r\a,-", "my string");

どうやってするか?

34
WhatIsOpenID

爆発はそれを行うことはできません。 preg_split そのため。次のようにします。

$keywords = preg_split("/[\s,-]+/", "This-sign, is why we can't have Nice things");
var_dump($keywords);

これは出力します:

  array
  0 => string 'This' (length=4)
  1 => string 'sign' (length=4)
  2 => string 'is' (length=2)
  3 => string 'why' (length=3)
  4 => string 'we' (length=2)
  5 => string 'can't' (length=5)
  6 => string 'have' (length=4)
  7 => string 'Nice' (length=4)
  8 => string 'things' (length=6)

ところで、splitは使用しないでください。非推奨です。

62
shamittomar

...または正規表現が好きではなく、それでも分解したい場合は、複数の文字を1文字だけに置き換えることができますbefore爆発:

$keywords = explode("-", str_replace(array("\n", "\t", "\r", "\a", ",", "-"), "-", 
  "my string\nIt contains text.\Rand several\ntypes of new-lines.\tAnd tabs."));
var_dump($keywords);

これは次のように吹き込まれます:

array(6) {
  [0]=>
  string(9) "my string"
  [1]=>
  string(17) "It contains text."
  [2]=>
  string(11) "And several"
  [3]=>
  string(12) "types of new"
  [4]=>
  string(6) "lines."
  [5]=>
  string(9) "And tabs."
}
9
Florian Mertens