phpquery 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #!/usr/bin/env php
  2. <?php
  3. if (!isset($argv[1]) || $argv[1] == 'help' || $argv[1] == '--help' || $argv[1] == '-h')
  4. die("Usage:
  5. phpquery URL --method1 arg1 arg2 argN --method2 arg1 arg2 argN ...
  6. Example:
  7. phpquery 'http://localhost' --find 'div > p' --contents
  8. Pipe:
  9. cat index.html | phpquery --find 'div > p' --contents
  10. Docs:
  11. http://code.google.com/p/phpquery/wiki/\n");
  12. /* ALL-IN-ONE-SECTION-START */
  13. set_include_path(get_include_path()
  14. .':'.'/usr/lib/phpquery'
  15. .':'.realpath(dirname(__FILE__).'/../phpQuery')
  16. );
  17. require_once('phpQuery.php');
  18. /* ALL-IN-ONE-SECTION-END */
  19. //phpQuery::$debug = true;
  20. //var_dump($argv);
  21. if (isset($argv[1]) && parse_url($argv[1], PHP_URL_HOST)) {
  22. if (@include_once('Zend/Http/Client.php')) {
  23. // use Ajax if possible
  24. phpQuery::ajaxAllowURL($argv[1]);
  25. // TODO support contentType passing (from response headers)
  26. phpQuery::get($argv[1],
  27. new Callback('phpQueryCli', new CallbackParam, array_slice($argv, 2))
  28. );
  29. } else {
  30. // use file wrapper when no Ajax
  31. phpQueryCli(file_get_contents($argv[1]), array_slice($argv, 2));
  32. }
  33. } else if (feof(STDIN) === false) {
  34. $markup = '';
  35. while(!feof(STDIN))
  36. $markup .= fgets(STDIN, 4096);
  37. phpQueryCli($markup, array_slice($argv, 1));
  38. } else {
  39. phpQueryCli($argv[1], array_slice($argv, 2));
  40. }
  41. function phpQueryCli($markup, $callQueue) {
  42. $pq = phpQuery::newDocument($markup);
  43. $method = null;
  44. $params = array();
  45. foreach($callQueue as $param) {
  46. if (strpos($param, '--') === 0) {
  47. if ($method) {
  48. $pq = call_user_func_array(array($pq, $method), $params);
  49. }
  50. $method = substr($param, 2); // delete --
  51. $params = array();
  52. } else {
  53. $param = str_replace('\n', "\n", $param);
  54. $params[] = strtolower($param) == 'null'
  55. ? null
  56. : $param;
  57. }
  58. }
  59. if ($method)
  60. $pq = call_user_func_array(array($pq, $method), $params);
  61. if (is_array($pq))
  62. foreach($pq as $v)
  63. print $v;
  64. else
  65. print $pq."\n";
  66. //var_dump($pq);
  67. }
  68. ?>