我正在使用 ereg_replace
$myurl="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$theid= ereg_replace("[^0-9]", "", $myurl);
要在输入网址的末尾获取ID
我想使用 preg_replace 并完成获取两种类型的ID
一个看起来像http:// site.com?id=64
像我上面那样但我想得到一个包含http:// site.com?pick=7878787
我正在尝试将pick id分配给一个名为$ thepickupcode
的变量和另一个名为$ theid
的变量我很高兴的任何帮助。
答案 0 :(得分:1)
非正则表达方式:
$res = parse_url($myurl);
parse_str($res['query'], $query);
$theid = $query['id'];
$thepickupcode = $query['pick'];
正则表达方式:
if (preg_match('~(?<=[?&])(id|pick)=([0-9]++)(?=&|$)~', $_SERVER['REQUEST_URI'], $match))
if ($match[1] == 'id') $theid = $match[2];
else $thepickupcode = $match[2];
答案 1 :(得分:0)
你的问题不明确,但我认为你想要的是:
然后你想要preg_match,而不是替换。
preg_match( '~(pick|id)=(.+)~i', $myurl, $res );
print_r( $res );
我不确定所有可能性是什么,但这可能更合适:
preg_match( '~\?(pick|id)=([0-9]+)$~i', $myurl, $res );
print_r( $res );
答案 2 :(得分:0)
如果要将ereg...
更改为preg...
,则必须将正则表达式括在分隔符中。
以你的例子:
$theid= ereg_replace("[^0-9]", "", $myurl);
变为:
$theid = preg_replace("/[^0-9]/", "", $myurl);
或
$theid = preg_replace("/\D+/", "", $myurl);
但如果有其他数字而不是id,这会给你错误的结果。
我建议你关注@CasimiretHippolyte的回答。