Preg_match网址获取ID号码

时间:2015-09-02 16:56:44

标签: php

我尝试了preg_match并且爆炸了但是并没有获得在网址中获取ID号码的好方法。

URL-S

$a = strtolower('<iframe src="//LearningApps.org/watch?app=1250652" style="border:0px;width:100%;height:500px" webkitallowfullscreen="true" mozallowfullscreen="true"></iframe>');
$b = strtolower('http://LearningApps.org/view1250652'); 
$c = strtolower('LearningApps.org/view1250652');
$d = strtolower('LearningApps.org/watch?app=1250652');
$e = strtolower('LearningApps.org');
$f = strtolower('http://learningapps.org/339473');

我试过了:

$match = '/[0-9]{7}/';
preg_match($match, $end, $matches);
print_R($matches);

但是id lenght可以改变,所以这对我来说不是很好的解决方案。

3 个答案:

答案 0 :(得分:0)

如果整个代码中的iframe样式值相同,这将正常工作:

$c = strtolower('<iframe src="//LearningApps.org/watch?app=1250652" style="border:0px;width:100%;height:500px" webkitallowfullscreen="true" mozallowfullscreen="true"></iframe>');
$numbers = intval(preg_replace('/[^0-9]+/', '', substr($c, 0, -100)), 10);
echo $numbers;

答案 1 :(得分:0)

如果您只想获取数字,可以使用正则表达式。

preg_match("/([0-9]{5,})/", $input_line, $output_array);

Check the code

或者(但是如果你有一个带有其他数字的字符串,下面的正则表达式将无法正常工作)

preg_replace("/\D/", "", $input_lines);

Check the code

答案 2 :(得分:0)

作为命名服务learningapps.org的开发人员,我可以为您提供我们自己的PHP函数来解析URL以获取ID:

function getLearningAppID($url){
  parse_str( parse_url( $url, PHP_URL_QUERY ), $params );
  $ID = null;
  $GUID = "";
  if(isset($params["v"])) $GUID = $params["v"];
  if(isset($params["id"])) $GUID = $params["id"];
  if($GUID == ""){
    // try AppID
    if(preg_match("@learningapps.org/(?:view)?(\d+)@i",$url,$matches)){
      $ID = $matches[1];
    }else{
      if(isset($params["app"])) $ID = $params["app"];
    }
  }

  // now you have either a value in $ID (public app) or $GUID (private app)
  ...
}

您也可以通过邮件直接与我们联系,我们很高兴听到基于learningapps.org的开发项目: - )