从结尾查找字符串模式

时间:2015-11-25 09:15:43

标签: php

我正在尝试查找字符串是否为<initial_part_of_name>_0.pdf格式,即

  1. 查找是否以.pdf结尾(可以使用rtrim
  2. 删除)
  3. 初始部分后跟_下划线。
  4. 下划线后跟一个整数(0,1,2,......等)
  5. 实现这一目标的最佳方法是什么?我已经尝试过字符串函数strpos的组合(找到位置。但是无法从字符串末尾做任何事情)。
    任何指针都将不胜感激!

    修改
    样本字符串:
    public://Big_Data_Tutorial_part4_0.pdf
    public://Big_Data_Tutorial_part4_1.pdf
    public://Big_Data_Tutorial_part4_3.pdf
    我需要检查的原因是为了避免使用附加_<number>存储的重复文件。

4 个答案:

答案 0 :(得分:4)

您可以使用{"login": "datomnurdin"} {"login": "ejamesc"} ... 功能匹配模式

检查功能preg_match()

preg_match()

preg_match("/(.*)_(\d+)\.pdf$/", "<initial_part_of_name>_0.pdf",$arr); ,您将获得$arr[1]

<initial_part_of_name>中,您将获得下划线后的数字

答案 1 :(得分:0)

$str = '<initial_part_of_name>_0.pdf';

$exploded = explode('.', $str);

echo $exploded[1];

答案 2 :(得分:0)

这可以使用正则表达式完成。像

这样的东西

^[0-9A-Za-z]+\_[\d]\.pdf$

<强>实施

$filename = '<initial_part_of_name>_0.pdf';

if(preg_match('/^[0-9A-Za-z]+\_[\d]\.pdf$/i', $filename)){
    // name pattern Matched
}

解决方案2

使用pathinfo()

$filename = '<initial_part_of_name>_0.pdf';
$path_parts = pathinfo($filename);

if(strtolower($path_parts['extension']) == 'pdf') {
    if(preg_match('/.*_[\d]$/', $path_parts['filename'])){
        // name pattern Matched
    }
} else {
    // Not a PDF file
}

答案 3 :(得分:0)

非数组和正则表达方式

npm uninstall (Get-ChildItem).Name