preg_replace的正则表达式:单独的路径和文件名

时间:2015-02-24 12:47:54

标签: php regex preg-replace filenames filepath

在PHP中,我尝试实现更改字符串:

<img class="alignnone size-medium wp-image-18" src="http://localhost/wp-content/uploads/2015/02/300x149-jquerymobile.jpg" alt="jquerymobile" width="300" height="149">

到此:

<img class="alignnone size-medium wp-image-18" src="" data-path="http://localhost/wp-content/uploads/2015/02/" data-img="300x149-jquerymobile.jpg" alt="jquerymobile" width="300" height="149">

我想要使用

preg_replace('/src="(what-is-a-path-regex)(.*)"/', 'src="" data-path="$1" data-img="$2"', '<img class="alignnone size-medium wp-image-18" src="http://localhost/wp-content/uploads/2015/02/300x149-jquerymobile.jpg" alt="jquerymobile" width="300" height="149">')

什么正则表达式取代“wat-is-a-path-regex”?

2 个答案:

答案 0 :(得分:1)

这应该有效:(https?:\/\/.+\/)(.+)。有一个例子here

话虽这么说,你应该看看是否可以将这种方法与DOM解析结合起来,这样你就可以先提取你需要的属性。

答案 1 :(得分:1)

您可以尝试下面的内容,

preg_replace('~src="(.*?\/)([^/"]*)"~', 'src="" data-path="\1" data-img="\2"', '<img class="alignnone size-medium wp-image-18" src="http://localhost/wp-content/uploads/2015/02/300x149-jquerymobile.jpg" alt="jquerymobile" width="300" height="149">');

DEMO

[^/"]*否定了符合任何字符但不符合"/的字符类,零次或多次。