2015-02-24 57 views
-2

在PHP中我尽量做到改变一个字符串:正则表达式的preg_replace:单独的路径和文件名

<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”?

回答

1

这应该工作:(https?:\/\/.+\/)(.+)。一个例子是here

这就是说,你看看是否有可能结合这种方法与DOM解析,以便您可以提取您首先需要的属性。

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

[^/"]*否定字符类。