在php中使用正则表达式检查字符串并在匹配时拆分

时间:2013-06-17 15:21:58

标签: php regex

我需要检查数千个URL并将其分解为单独的变量。

我正在寻找的网址如下: -

http://www.mydomain.com/facebook-pages/252090964881271-smirnoff

http://www.mydomain.com/facebook-pages/3312880235580-facebook-for-every-phone

http://www.mydomain.com/facebook-pages/2449443856-candy-crush-saga

我想忽略的其他人没有像这样的数字: -

http://www.mydomain.com/facebook-pages/media/

我需要一个正则表达式模式,可以识别以: -

开头的字符串

http://www.mydomain.com/facebook-pages/ 并且还包含一系列数字(可变长度)。

然后我需要提取代码(数字)和数字后的文本,例如: -

$ pagecode =“2449443856

$ pagename =“candy crush saga”

来自此字符串http://www.mydomain.com/facebook-pages/2449443856-candy-crush-saga

我尝试了所有不同的正则表达式字符串,我真的很挣扎。有人可以帮忙吗?

由于

乔纳森

2 个答案:

答案 0 :(得分:1)

试试这个,

$str = 'http://www.mydomain.com/facebook-pages/2449443856-candy-crush-saga';
if (preg_match('/^http:\/\/www.mydomain.com\/facebook-pages\/([0-9]+)-(.*?)$/si', $str, $match)) {
  $page_no = $match[1];
  $page_name = $match[2];
}

答案 1 :(得分:0)

$string = 'http://www.mydomain.com/facebook-pages/2449443856-candy-crush-saga';

if (preg_match('@^http://www.mydomain.com/facebook-pages/([0-9]+)-(.+)$@', $string, $matches)) {
    $pagecode = $matches[1];
    $pagename = $matches[2];
}