-1

我使用 symfony2 框架构建了一个项目。我必须解析用户输入的 URL 并对其进行分析。例如,如果用户输入类似“ http://www.amazon.com/Samsung-Galaxy-GT-I9300-Factory-Unlocked/dp/B007VCRRNS/ref=sr_1_1?s=wireless&ie=UTF8&qid=1362207625&sr=1- 1&keywords=samsung+galaxy+s3 " 程序应提取型号名称、价格、图像等。

我可以使用任何捆绑包或插件吗?

4

2 回答 2

1

您还可以使用 File_get_contents 来获取数据,也可以使用 Javascript 来获取数据,因为有很多选项可用:

<?php
    $output = file_get_contents(
        'http://www.website.com/');
    $output = str_replace('rhs','"rhs"',$output);
    $output = str_replace('lhs','"lhs"',$output);
    $output = str_replace('error','"error"',$output);
    $output = str_replace('icc','"icc"',$output);

    $json = json_decode($output);
    $rhs = $json->rhs;
?>

并使用 jQuery ajax

jQuery.ajax( url [, settings] )
jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

和纯 JavaScript 脚本

function parseURLParams(url) {
  var queryStart = url.indexOf("?") + 1;
  var queryEnd   = url.indexOf("#") + 1 || url.length + 1;
  var query      = url.slice(queryStart, queryEnd - 1);

  if (query === url || query === "") return;

  var params  = {};
  var nvPairs = query.replace(/\+/g, " ").split("&");

  for (var i=0; i<nvPairs.length; i++) {
    var nv = nvPairs[i].split("=");
    var n  = decodeURIComponent(nv[0]);
    var v  = decodeURIComponent(nv[1]);
    if ( !(n in params) ) {
      params[n] = [];
    }
    params[n].push(nv.length === 2 ? v : null);
  }
  return params;
}

使用如下:

var urlString = "http://www.foo.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
var urlParams = parseURLParams(urlString);

它返回一个像这样的对象:

{
  "a"  : ["a a"],     /* param values are always returned as arrays */
  "b b": ["b"],       /* param names can have special chars as well */
  "c"  : ["1", "2"]   /* an URL param can occur multiple times! */
  "d"  : [null]       /* params without values are set to null */ 
} 

所以

parseURLParams("www.mints.com?name=something")

{name: ["something"]}
于 2013-03-02T07:33:39.947 回答
0

严格来说还不知道怎么做,但是在 symfony 代码中看到当前 url 是如何被分析并绑定到一个 Request() 对象中的,并且提取了所有的 GET 和 POST 参数可能会很棒。

可能可重用于在您的服务/控制器内部分析您的 url,并且只需使用 $request->query 中的 GET 参数生成的 Request 对象。

只是一个想法=)

于 2013-03-02T15:16:02.130 回答