0

Twitter Search APIは、次のようなATOM/XML形式で結果を返します。

<author>
  <name>username (Friendly Name)</name>
  <uri>http://twitter.com/username</uri>
</author>

私のPHPでは、名前フィールドを変数として取得できるため、次のようになります。

$names = "username (Friendly Name)"

しかし、PHPを使用して、次のようにそれらを個別の変数として抽出したいと思います。

$username = "username"
$friendlyName = "Friendly Name" (without parantheses)

TIA!

4

2 に答える 2

3

非正規表現ソリューション:

$names = 'username (Friendly Name)';
list($username, $friendlyName) = explode('(', $names);
$username = trim($username);
$friendlyName = trim($friendlyName, ')');

どちらの名前でも括弧は無効であると想定します。

于 2010-01-09T17:21:34.593 に答える
1

このようなことをする必要があります、私は推測します:

$names = "username (Friendly Name)";
if (preg_match('/^(.*?) \((.*)\)$/', $names, $m)) {
    var_dump($m[1], $m[2]);
}

そして、あなたは、この場合、得ています:

string 'username' (length=8)
string 'Friendly Name' (length=13)

(" string"、 " length"、およびこれらはすべて、の出力でありvar_dump、実際の変数の内容ではないことに注意してください)


基本的に、正規表現は一致しています:

  • 文字列の先頭からスペースまで
  • 次に、()
  • そして、これらは2つの返されるパターンです-エスケープされていないパターンの間にあるため()です。$m[1]つまり、彼らは$m[2]
于 2010-01-09T16:36:01.293 に答える