PHP preg_replace除8位数外的所有数字和单词[重复]

cgyqldqp  于 2023-05-27  发布在  PHP
关注(0)|答案(1)|浏览(98)

此问题已在此处有答案

How to get a substring between two strings in PHP?(39答案)
Extract a substring between two characters in a string PHP(11个答案)
Get content between two strings PHP(7个答案)
Write a regex to get numbers between two delimiters(2个答案)
how to get the string between two character in this case?(2个答案)
5天前关闭。
如何替换字符串中的所有字符,除了8位数字?
示例:

$string = "346-Bank-Report-20230217.pdf";
echo preg_replace("/(?<!\d)\d{3}(?!\d)/", '', $string;

给予
346-Bank-Report-20230217.pdf
$字符串取自数据库,在本例中,前3位数字可以是1、2、3、4甚至5位数字。名称(本例中为“银行报告”)可以是任何长度。
这是实际代码:
preg_replace("/(?<!\d)\d{3}(?!\d)/", '', $results[$k]["vat_certificate_file"])
我实际上只想要日期戳,在这个例子中是20230217

xuo3flqw

xuo3flqw1#

与其使用preg_replace删除不需要的字符串部分,不如使用preg_match检索需要的字符串部分。
以下解决方案提取文件名的日期戳部分,并且不需要知道最接近日期戳的-之前和.之后的内容:

$string = "346-Bank-Report-20230217.pdf";
preg_match('/(?<=-)\d+(?=\.)/', $string, $match);
var_dump($match[0]);

相关问题