我们有看起来像这样的网址 http://www.example.co.uk/example-product-3436.html
我希望能够使用将删除-unqiue number
的 php 脚本。我将使用正则表达式来执行此操作。我找到了这个([^'d])[0-9]{4}
,它会找到任何四位数字,但我只希望它找到一个 4 位数字,如果它前面有一个-
。我该怎么做?
//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"> -
/
标志着正则表达式的结束
要替换前面带有连字符的 4 位数字,如果后跟 .html
请使用前瞻:
$str = preg_replace('/-'d{4}(?='.html)/', "", $str);
-
-'d{4}
匹配后跟 4 位数字的连字符 -
(?='.html)/
看.html
是否领先
在 eval.in 观看演示
如果不也向右分隔'd{4}
将在任何长度的数字内匹配>= 4。
您也可以在右侧使用'b
字边界(如果这足以满足您的输入(。
你只需要对正则表达式进行微小的更改:
<?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;