Существует несколько причин не анализировать HTML с помощью регулярного выражения. Но, если у вас есть полный контроль над тем, какой HTML будет сгенерирован, вы можете сделать это с помощью простого регулярного выражения.
Выше это функция, которая анализирует HTML по регулярному выражению. Обратите внимание, что эта функция очень чувствительна и требует, чтобы HTML подчинялся определенным правилам, но он работает очень хорошо во многих сценариях. Если вы хотите простой синтаксический анализатор и не хотите устанавливать библиотеки, сделайте снимок:
function array_combine_($keys, $values) {
$result = array();
foreach ($keys as $i => $k) {
$result[$k][] = $values[$i];
}
array_walk($result, create_function('&$v', '$v = (count($v) == 1)? array_pop($v): $v;'));
return $result;
}
function extract_data($str) {
return (is_array($str))
? array_map('extract_data', $str)
: ((!preg_match_all('#<([A-Za-z0-9_]*)[^>]*>(.*?)</\1>#s', $str, $matches))
? $str
: array_map(('extract_data'), array_combine_($matches[1], $matches[2])));
}
print_r(extract_data(file_get_contents("http://www.google.com/")));
К сожалению, нет встроенного шаблона noConflict
. Вы можете посмотреть на несколько взаимосвязанных Multiple fbAsyncInit? для вдохновения.
Вы хотите связать обратные вызовы window.fbAsyncInit
, а затем захватить / сохранить результирующий объект window.FB
как что-то еще.