在php中使用正则表达式提取文件名

时间:2016-10-21 12:23:32

标签: php regex

<ac:image ac:height="400">
<ri:attachment ri:filename="screenshot4.png"></ri:attachment>
</ac:image>

结果应为 screenshot4.png

2 个答案:

答案 0 :(得分:3)

虽然可以使用正则表达式以当前形式从XML中成功提取文件名,但这不是一个正确的解决方案。您无法正确解析带有正则表达式的XML或HTML。

使用常用的PHP扩展程序之一:SimpleXMLDOM

以下是使用SimpleXML的示例。

$xml = <<<XML
<ac:image ac:height="400">
<ri:attachment ri:filename="screenshot4.png"></ri:attachment>
</ac:image>
XML;

$doc = new SimpleXMLElement($xml, LIBXML_NOERROR);

$filename = (string) $doc->{'ri:attachment'}->attributes()['ri:filename'];

var_dump($filename);

<强>输出:

  

string(15)“screenshot4.png”

不需要正则表达式。

答案 1 :(得分:-2)

[\w]*\.[\w]*

将是一个非常基本的版本。解释,因为你不想学习它:

  1. \w匹配任何单词char(a-z,A-Z和numerics)
  2. *量词匹配零个或多个字符
  3. \.逃脱单点
  4. 所以这个RegEx会查找一个字符串,其中包含一个字母和数字,后跟一个点,并以另一个字母和数字序列结束。

    希望有帮助...

    修改

    在您的情况下使用RegEx(XML等),可能会返回错误的匹配...