Как извлечь имя пользователя Twitter из API поиска через PHP - PullRequest
0 голосов
/ 09 января 2010

API Twitter Search возвращает результаты в формате 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!

Ответы [ 2 ]

3 голосов
/ 09 января 2010

Решение без регулярных выражений:

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

Предполагается, что скобки недействительны ни для одного из имен.

1 голос
/ 09 января 2010

Нечто подобное должно делать, я полагаю:

$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, а не фактическим содержимым переменных)


В основном, регулярное выражение соответствует:

  • Что-нибудь от начала строки до пробела
  • Тогда что-нибудь между ()
  • И это два возвращаемых паттерна - так как они находятся между неотбегшими (); это означает, что они будут в $m[1] и $m[2]
...