2012-07-01 98 views
0

如何使用單個字符PHP通配符進行字符串替換?如何使用單個字符PHP通配符進行字符串替換?

我需要做一個字符串替換在下面的代碼行:

<img src="http://mydomain.com/image-1.jpg" alt="image 1"></a> 
<img src="http://mydomain.com/image-2.jpg" alt="image 2"></a> 
<img src="http://mydomain.com/image-3.jpg" alt="image 3"></a> 
<img src="http://mydomain.com/image-4.jpg" alt="image 4"></a> 

我想內的所有上述各行的替換以下字符串:

alt="image *"></a> 

其中*通配符代表一個數字,下面的大於號碼:

> 

要同意t他下面的結果:

<img src="http://mydomain.com/image-1.jpg"> 
<img src="http://mydomain.com/image-2.jpg"> 
<img src="http://mydomain.com/image-3.jpg"> 
<img src="http://mydomain.com/image-4.jpg"> 

如果可能的話,我想做到這一點使用的PHP代碼從而避免了必須使用循環語句一行。

在此先感謝。

+1

您是否搜索[PHP文檔](http://fr2.php.net/manual/en/ref.strings.php)? – Jocelyn

+2

爲什麼這些約束單線和無迴路?你的公司是否有新線人物? – Wrikken

回答

3

正則表達式或RegEx應該很好地做到這一點。

preg_replace('(alt="image [0-9]+"></a>)', '>', $text); 
  • 在正則表達式字符組[]的構建體是指任何組中指定的字符可以作爲一個通配符匹配。
  • 在組內使用破折號-表示在我們的案例0-9中,字符組跨度從az
  • 在字符組的末尾使用星號*表示該組可以重複0次或更多次,從而允許我們定義由多個數字組成的數字。
  • 使用加號代替星號表示該組可以重複一次或多次(這可能更適合此處,因爲您希望匹配數字而不是空白槽)。
+0

謝謝,這似乎工作得很好。 – Sammy

+0

我使用'+'而不是'*'更新了代碼,因爲星號允許數字序列匹配0次或更多次。但我們確信我們會在那裏有一個號碼,所以我們需要匹配1次或更多次。 –

+0

我不明白你的意思是「匹配0次還是多次」或「我們需要匹配1次或更多次」你能解釋一下嗎?謝謝@Mihai Stancu – Sammy