2011-05-01 46 views
3

PHP是否有AND運算符 - 正則表達式。preg_replace PHP AND

我試圖替換從document')的所有內容。

$output = preg_replace('/document.*\'/', '', $output); 

任何想法如何做到這一點?

我試圖找到一些RegEX的教程,但我找不到任何好的。如果您有任何好的網站或書籍,請給我一個鏈接。我搜索了很多。

謝謝。

編輯:誤解。

這是更換前的代碼。

<p>document.write(unescape(' 
<embed src="XXXXXX" type="application/x-shockwave-flash" wmode="window" width="712" height="475"%.35" allowFullScreen="true" ></embed> 
')));</p> 

我想使它看起來像這樣:

<p> 
<embed src="XXXXXX" type="application/x-shockwave-flash" wmode="window" width="712" height="475"%.35" allowFullScreen="true" ></embed> 
</p> 

替換:

document.write(unescape(' 

'))); 
+1

建議使用頻率最高的http://regular-expressions.info/。介紹大多是可以理解的。另外看看這個工具列表http://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world幫助製作正則表達式。 – mario 2011-05-02 00:03:29

+0

使用分隔符的信譽。所以很多新人不會。 :) – 2011-05-02 00:04:31

+1

@mario我之前檢查過它。它沒有看起來新人 - 友好。我會再看看,謝謝:) – Muazam 2011-05-02 00:25:41

回答

2

你真正想要的是更換兩個部分,並留在了介於兩者之間。爲了不讓它匹配不需要的部分,使用顯式的字符類:

= preg_replace("/document[\w.(]+['](.*?)['][);]+/s", '$1', $output); 

所以匹配任何封閉在('')與不同量的後者。

+0

該代碼不會取代任何內容或提供任何錯誤。感謝您的幫助。 – Muazam 2011-05-02 01:01:58

+0

@Muazam:的確如此。用'/ s'修飾符再試一次。適用於您的示例。 – mario 2011-05-02 01:05:55

0

你的意思是OR

你想剝離範圍["document", "'"]和範圍["document", ")"],對吧?這與範圍["document", "'" OR ")"]類似。

在正則表達式中,|表示「或」。

$output = preg_replace('/document.*(\'|\))/', '', $output); 
+0

對不起,誤解,更新第一篇文章的例子。 – Muazam 2011-05-02 00:22:14

+0

@Muazam:我還是不太明白。也許我太累了。 – 2011-05-02 00:24:01

+0

你給我的代碼並不代替「')));」 – Muazam 2011-05-02 00:27:48

0

在正則表達式中,AB是A and B A | B是A OR B

所以,如果你想匹配')然後就放進了正則表達式。

。如果您想匹配任何')作爲字符串的結尾使用'|)[')]

使用類似http://gskinner.com/RegExr/來試試你的正則表達式另一方面。它也有右側的描述。

+0

我想匹配他們兩個,但不是爲了。謝謝 – Muazam 2011-05-02 00:22:53

0
  • 使用圓括號創建匹配組
  • 使用$ 1指的是

$output = preg_replace("/document[^']*'([^']*)[^;]*;/", '$1', $output);

+0

語法錯誤,意外']',這看起來像一些提前RegEX。謝謝你的幫助:) – Muazam 2011-05-02 00:51:35

+0

@Muazam:它被SO formatter – vartec 2011-05-02 00:54:10

+0

弄壞了你修好了嗎?我仍然收到相同的錯誤:/ – Muazam 2011-05-02 01:00:31