preg_match_all的正则表达式模式

时间:2011-12-08 21:23:36

标签: php regex

  

可能重复:
  How to extract img src, title and alt from html using php?

我想允许用户上传图片到上传/ tmp文件夹以供将来在他们的帖子中使用。 1.用户将几张图片上传到'uploads / tmp /' 这是他的文字:

Some text with img tags:
    1. <img src="http://site.com/uploads/tmp/d272b2d4.jpg">
    2. <img src="http://www.site.com/uploads/tmp/132784ca.jpg">
    3. <img src="www.site.com/uploads/tmp/e08b0bc8.jpg">
    4. <img src="site.com/uploads/tmp/f40ba84c.jpg">

我想从src属性中获取这些文件名并将文件移动到所需的文件夹,然后将图像替换为:

1. <img src="http://site.com/uploads/posts/user/d272b2d4.jpg">
2. <img src="http://www.site.com/uploads/posts/user/132784ca.jpg">
3. <img src="www.site.com/uploads/tmp/posts/user/e08b0bc8.jpg">
4. <img src="site.com/uploads/tmp/posts/user/f40ba84c.jpg">

所以问题是我无法在src中创建获取和替换文件名的模式,并且会感激任何帮助。我正在使用PHP。

2 个答案:

答案 0 :(得分:0)

如果您在img中向其传递了多个$subject个标记,则应获取所有来源。

preg_match_all( '/(?:src=\")(.+)(?:\")/i', $subject, $matches);

测试$matches匹配

echo '<pre>'.print_r($matches,true).'</pre>';

答案 1 :(得分:0)

使用:

preg_match_all( '/(?:src=\")((?:http(?:s|):\/\/|)(?:www\.|)site\.com\/uploads\/tmp\/[a-z0-9]+\.jpg(?:\")/is', $subject, $matches);

var_dump( $matches );