Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php URL中值的正则表达式-屏幕抓取_Php_Regex_Web Scraping_Preg Match_Screen Scraping - Fatal编程技术网

Php URL中值的正则表达式-屏幕抓取

Php URL中值的正则表达式-屏幕抓取,php,regex,web-scraping,preg-match,screen-scraping,Php,Regex,Web Scraping,Preg Match,Screen Scraping,我已经尝试了许多不同的例子,但我似乎无法正确地完成它,所以我希望其他人能够帮助这个项目 正在处理一个基于PHP的scrape项目 我想从下面的url获取“5094151”: 请记住,对于项目列表,这个数字“5094151”代表一个项目编号,因此每个URL都会不同,并且数字的大小也会有所不同。例如,这个数字的长度可以是4位数,也可以是7位数,也可以是10位数 我正在寻找一个preg_match函数,可以给我这个数字 任何帮助都将不胜感激 \d+$ \d+匹配尽可能多的数字(至少一个) $匹配

我已经尝试了许多不同的例子,但我似乎无法正确地完成它,所以我希望其他人能够帮助这个项目

正在处理一个基于PHP的scrape项目

我想从下面的url获取“5094151”:

请记住,对于项目列表,这个数字“5094151”代表一个项目编号,因此每个URL都会不同,并且数字的大小也会有所不同。例如,这个数字的长度可以是4位数,也可以是7位数,也可以是10位数

我正在寻找一个preg_match函数,可以给我这个数字

任何帮助都将不胜感激

\d+$
  • \d+
    匹配尽可能多的数字(至少一个)
  • $
    匹配字符串的结尾

  • \d+
    匹配尽可能多的数字(至少一个)
  • $
    匹配字符串的结尾

  • \d+
    匹配尽可能多的数字(至少一个)
  • $
    匹配字符串的结尾

  • \d+
    匹配尽可能多的数字(至少一个)
  • $
    匹配字符串的结尾


根据您当前的示例,这个正则表达式应该可以找到
id

.*-(\d+)
演示:

*
表示捕获每个/任何字符,直到最后一个
-
\d
是一个数字
+
是一个或多个数字,
()
捕获该值

在PHP中的用法

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
preg_match('~.*-(\d+)~', $string, $id);
echo $id[1];
输出:

5094151


PHP示例中的
~
是分隔符;它们区分正则表达式的开始和结束位置。

根据您当前的示例,此正则表达式应该找到
id

.*-(\d+)
演示:

*
表示捕获每个/任何字符,直到最后一个
-
\d
是一个数字
+
是一个或多个数字,
()
捕获该值

在PHP中的用法

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
preg_match('~.*-(\d+)~', $string, $id);
echo $id[1];
输出:

5094151


PHP示例中的
~
是分隔符;它们区分正则表达式的开始和结束位置。

根据您当前的示例,此正则表达式应该找到
id

.*-(\d+)
演示:

*
表示捕获每个/任何字符,直到最后一个
-
\d
是一个数字
+
是一个或多个数字,
()
捕获该值

在PHP中的用法

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
preg_match('~.*-(\d+)~', $string, $id);
echo $id[1];
输出:

5094151


PHP示例中的
~
是分隔符;它们区分正则表达式的开始和结束位置。

根据您当前的示例,此正则表达式应该找到
id

.*-(\d+)
演示:

*
表示捕获每个/任何字符,直到最后一个
-
\d
是一个数字
+
是一个或多个数字,
()
捕获该值

在PHP中的用法

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
preg_match('~.*-(\d+)~', $string, $id);
echo $id[1];
输出:

5094151


PHP示例中的
~
是分隔符;它们区分正则表达式的开始和结束位置。

如果它是字符串的最后一部分,并且总是以
-{number}
结尾,则不需要正则表达式:

$num = strrchr($url, '-');

如果它是字符串的最后一部分,并且总是以
-{number}
结尾,则不需要正则表达式:

$num = strrchr($url, '-');

如果它是字符串的最后一部分,并且总是以
-{number}
结尾,则不需要正则表达式:

$num = strrchr($url, '-');

如果它是字符串的最后一部分,并且总是以
-{number}
结尾,则不需要正则表达式:

$num = strrchr($url, '-');

如果没有正则表达式,您也可以通过分解URL字符串获得该id

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
$id = end(explode("-",$string));

如果没有正则表达式,您也可以通过分解URL字符串获得该id

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
$id = end(explode("-",$string));

如果没有正则表达式,您也可以通过分解URL字符串获得该id

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
$id = end(explode("-",$string));

如果没有正则表达式,您也可以通过分解URL字符串获得该id

$string = 'http://www.test.com/item/11-x-17-1-1-2-Gold-Distressed-Picture-Frame-11101202-5094151';
$id = end(explode("-",$string));
这样你就可以把它保持在一条线上

这样你就可以把它保持在一条线上

这样你就可以把它保持在一条线上


这样你就可以把它放在一行。

我可能应该再澄清一点。。。我正在使用一个基于php的刮取功能,它可以“假脱机”页面上的URL。。。之前的方法是:[code]preg_match_all(“~”(^“]+)“~is',$index,$matches);[/code]当然不再有效,因为标记更改为最初给出的url,所以我正在寻找更新此特定方法的正确方法。您是说要获取所有“项目编号”吗“从url而不仅仅是最后一个?我们正在做的是加载页面,检查是否存在任何链接,如果存在,加载它们并从中获取我们需要的数据。示例:

$url=((int)$page==$page)$基本url。“?页面=配置文件&pg=”.$page.&profile\u用户名=”.$username:$page$索引=$curl->fetch\u url($url,$post,$cur\u ip)//详细URL和类别preg_match_all(“~”(^“]+)“~is',$index,$matches);foreach($matches[1]作为$key=>$value){$ret[$value]=$value;}请更新您的问题,难以阅读的代码作为注释。我可能应该再澄清一点…我使用一个基于php的刮取函数,从页面上“后台打印”URL…之前的方法是:[code]preg_match_all(“~”(^“]+)“~is',$index,$matches);[/code]这当然不再有效了,因为标记最初看起来像url,所以我正在寻找正确的方法来更新这个特定的。你是说你想从url获取所有的“项目编号”,而不仅仅是最后一个?我们正在做的是加载页面,检查是否存在任何链接,如果有的话,加载它们并从中获取我们需要的数据。示例:

$url=((int)$page==$page)$基本url。“?页面=配置文件&pg=”.$page.&profile\u用户名=”.$username:$page$索引=$curl->fetch\u url($url,$post,$cur\u ip)//判定元件