-1

入力文字列:

:txt{sometext}:alpha

このようなデータを抽出したい (括弧から抽出):

を使用した結果preg_match_all():

sometext

このようにしようとしていますが、どれもうまくいきません:

php >  preg_match_all('/^(\:txt)(.*)+(\{)(.*)+(\})/i', ':txt{sometext}:alpha', $m); var_dump($m);
array(6) {
  [0] =>
  array(1) {
    [0] =>
    string(14) ":txt{sometext}"
  }
  [1] =>
  array(1) {
    [0] =>
    string(1) ":"
  }
  [2] =>
  array(1) {
    [0] =>
    string(0) ""
  }
  [3] =>
  array(1) {
    [0] =>
    string(1) "{"
  }
  [4] =>
  array(1) {
    [0] =>
    string(0) ""
  }
  [5] =>
  array(1) {
    [0] =>
    string(1) "}"
  }
}

注:サンプルとして、このようなもの:txt{sometext}:alpha:another{mydata}があるので、からデータを抽出して:another、のような結果を得ることができmydataます。

結果:

スニファからの結果:

php >  preg_match_all('/(?<=:txt{)([^}]+)(?=})/', ':txt{sometext}:alpha', $x); var_dump($x);
array(2) {
  [0] =>
  array(1) {
    [0] =>
    string(8) "sometext"
  }
  [1] =>
  array(1) {
    [0] =>
    string(8) "sometext"
  }
}

ジェリーからの結果:

php >  preg_match_all('/^:txt\{([^}]+)\}/', ':txt{sometext}:alpha', $x); var_dump($x);
array(2) {
  [0] =>
  array(1) {
    [0] =>
    string(14) ":txt{sometext}"
  }
  [1] =>
  array(1) {
    [0] =>
    string(8) "sometext"
  }
}
4

1 に答える 1