2013-07-18 32 views
1

我假设最简单的方法是使用正则表达式,但我似乎无法找到关于正则表达式的明确信息。我是初学者,我发现的所有信息都令人困惑。在图像地址的开头插入目录路径

我需要找到HTML文件中的每个图像,插入文件夹扩展名,然后覆盖该文件。我知道如何去做所有的事情,除了替换。从我的理解,代码应该看起来像这样:

preg_replace("^\"(.jpg|.jpeg|.gif|.png)$"....) 

但我不明白从那里去哪里。我需要保留这些东西之间的任何东西的原始值,并在它的开头添加一些东西,例如“image.jpg”会变成“images/image.jpg”。

+0

不,相当*解析*与DOM,SimpleHTMLDom等HTML文件请参阅http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in- php – michi

+4

[不,我们不能用正则表达式来操作HTML](http://stackoverflow.com/a/1732454/560648)。 –

+1

为什么不能直接输出想要的图像路径呢?这是什么原因? – vee

回答

0
$img = "<a href=\"hello.jpg\" /><a href=\"asdf.png\" /><a href=\"xkcd.gif\" />"; 
$img = preg_replace("/\"(\w+\.(jpg|jpeg|gif|png))\"/","\"images/$1\"",$img); 
echo $img; 

输出:<a href="images/hello.jpg" /><a href="images/asdf.png" /><a href="images/xkcd.gif" />

正则表达式可以使用lookarounds得到改善,但我认为他们是矫枉过正(并使其更加复杂)。

+0

我不明白你的意见。它适用于任何[$ img]的[有效]值。有错误吗? – Racso

+0

任何已知的原因,为什么这可能在此示例中的字符串上工作,而不是在完整的HTML文件的字符串上? – user2597300

+0

将完整的字符串上传到某处并向我们展示可能发生的事情。如果你把这个字符串放在PHP上,请注意转义的反斜杠('\')和那些东西。 – Racso