2015-02-24 116 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

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