我们的网址看起来像这样
http://www.example.co.uk/example-product-3436.html
我希望能够使用将删除-unqiue number
的php脚本。我将使用正则表达式来执行此操作。我发现这个([^\d])[0-9]{4}
会找到任意四位数字,但我只希望它找到一个4位数字,如果前面有一个-
。我怎样才能做到这一点?
答案 0 :(得分:3)
//Regular expression
$regex = "/-(\\d{4})\\.html/";
//String to check
$string = "http://www.example.co.uk/example-product-3436.html";
//Output match to $match
preg_match($regex, $string, $match);
//Print the unique number
echo $match[1];
正则表达式的说明:
/
是正则表达式的开头-
匹配连字符(...)
是一个捕获组(您要返回的内容)\d
匹配任何数字([0-9]){4}
需要完整的四个字符(\d{4}
需要完全四位数字)\.
匹配字符"。"字面上html
匹配" html"字面上/
标志着正则表达式的结束答案 1 :(得分:2)
要替换前面带有连字符的4位数字,如果后跟.html
,请使用lookahead:
$str = preg_replace('/-\d{4}(?=\.html)/', "", $str);
-\d{4}
匹配连字符后跟4位数字(?=\.html)/
查看.html
是否提前如果没有分隔到右侧\d{4}
将匹配within numbers of any length >= 4
如果这足以让您输入,也可以使用右侧的\b
word boundary。
答案 2 :(得分:1)
您只需对正则表达式进行一些小改动:
<?php
$url = 'http://www.example.co.uk/example-product-3436.html';
if(preg_match('/-[0-9]{4}/', $url, $matches)) {
$cleanUrl = str_replace($matches[0], '', $url);
}
echo $cleanUrl;