将 HTML 文档正文中的 javascript document.write() 调用替换为其 HTML 内容

问题描述 投票:0回答:4

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('

')));
php regex dom replace html-parsing
4个回答
2
投票

您真正想要的是更换两个部件,并在中间留下一些东西。为了不使其匹配不需要的部分,请使用显式字符类:

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

因此它与

('
')
中包含的任何内容以及后者数量不同的内容相匹配。


0
投票

你的意思是

OR
吗?

您想删除范围

["document", "'"]
和范围
["document", ")"]
,对吧?这就像范围
["document", "'" OR ")"]

在正则表达式中,

|
表示“或”。

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

0
投票

在正则表达式中,AB 是

A and B
A|B 是
A OR B

所以如果你想匹配

')
那么只需将其放入正则表达式中即可。

另一方面,如果您想匹配

'
)
作为字符串末尾,请使用
'|)
[')]

使用类似 http://gskinner.com/RegExr/ 的东西来尝试你的正则表达式。右侧也有说明。


0
投票
  • 使用括号创建匹配组
  • 用$1来引用它

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

© www.soinside.com 2019 - 2024. All rights reserved.