2011-05-01 59 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