0

Twitter Search api 以 ATOM/XML 格式返回结果,如下所示:

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

在我的 PHP 中,我可以将 name 字段作为变量,所以它看起来像这样:

$names = "username (Friendly Name)"

但我想使用 PHP 将它们提取为单独的变量,如下所示:

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

蒂亚!

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,而不是实际变量的内容)


基本上,正则表达式是匹配的:

  • 从字符串开头到空格的任何内容
  • 然后,任何介于()
  • 这些是两个返回的模式——因为它们在 non-escaped 之间();这意味着他们将在$m[1]并且$m[2]
于 2010-01-09T16:36:01.293 回答