PHP 的正则表达式有
AND
运算符吗?
我正在尝试替换从
document
到 '
和 )
的所有内容。
$output = preg_replace('/document.*\'/', '', $output);
我试图找到一些正则表达式的教程,但我找不到任何好的东西。
编辑:误解。
这是替换前的代码。
<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('
和
')));
您真正想要的是更换两个部件,并在中间留下一些东西。为了不使其匹配不需要的部分,请使用显式字符类:
= preg_replace("/document[\w.(]+['](.*?)['][);]+/s", '$1', $output);
因此它与
('
和 ')
中包含的任何内容以及后者数量不同的内容相匹配。
你的意思是
OR
吗?
您想删除范围
["document", "'"]
和范围 ["document", ")"]
,对吧?这就像范围["document", "'" OR ")"]
。
在正则表达式中,
|
表示“或”。
$output = preg_replace('/document.*(\'|\))/', '', $output);
在正则表达式中,AB 是
A and B
A|B 是 A OR B
所以如果你想匹配
')
那么只需将其放入正则表达式中即可。
另一方面,如果您想匹配
'
或 )
作为字符串末尾,请使用 '|)
或 [')]
使用类似 http://gskinner.com/RegExr/ 的东西来尝试你的正则表达式。右侧也有说明。
$output = preg_replace("/document[^']*'([^']*)[^;]*;/", '$1', $output);