正则表达式匹配url模式

时间:2017-01-13 08:05:03

标签: php regex

我想创建一个函数来验证CMS中可能的url模式。可能的模式:

9-naberanie-cistej-hmoty
demonize-p18
maximizing-your-prohormone-cycle-34
  1. 链接模式

    • CATEGORY_ID-CATEGORY_URL
  2. 链接模式

    • PRODUCT_URL-pPRODUCT_ID
  3. 链接模式

    • ARTICLE_URL-ARTICLE_ID
  4. 是否可以通过正则表达式验证它?我正在考虑爆炸这些东西,但是如果有正则表达式可以采取更多步骤,我可以使用它会很棒。我对regexp不熟悉所以感谢您的帮助

    代码:

    $category = "9-naberanie-cistej-hmoty";
    preg_match("([0-9]+)-([A-Za-z-]+)", $category);
    

    当我运行此代码时,我得到了

      

    消息:preg_match():未知修饰符' - '

2 个答案:

答案 0 :(得分:1)

好的,在你开始考虑你的问题后,你自己给了一个很好的答案!

我只做了一些小修改。不要回答你的问题,你要说明,但是要指出你应该通过添加前面的^和一个尾随的$来锚定你的表达到主题的开头和结尾......

关闭php标签很少是个好主意......

<?php
$category = "9-naberanie-cistej-hmoty";
$product  = "demonize-p18";
$article  = "maximizing-your-prohormone-cycle-34";

preg_match('/^([0-9]+)-([A-Za-z-]+)$/', $category, $matches);
preg_match('/^([A-Za-z-]+)-p([0-9]+)$/', $product, $matches);
preg_match('/^([A-Za-z-]+)-([0-9]+)$/', $article, $matches);

答案 1 :(得分:0)

非常感谢arkascha我的答案是:)

以下是代码:

<?php
$category = "9-naberanie-cistej-hmoty";
$product  = "demonize-p18";
$article  = "maximizing-your-prohormone-cycle-34";

preg_match("/([0-9]+)-([A-Za-z-]+)/", $category, $matches);
preg_match("/([A-Za-z-]+)-p([0-9]+)/", $product, $matches);
preg_match("/([A-Za-z-]+)-([0-9]+)/", $article, $matches);
?>