-1

このコードを用意してください...フォームから非常に特定のJS行を取り除いて無効なhtmlを生成すると想定しているため、後でdomパーサーを使用して作業できますが、このエラーが発生します

Warning: preg_replace(): Compilation failed: missing ) at offset 29 in E:\xampp-portable\htdocs\ingeniat\system\replace_html.php on line 18

これがコードです。なぜこれが起こっているのかわかりません。皆さんが助けてくれることを願っています!

<?php
//<input class="correct" readonly="readonly" onmouseover="return overlib('<div 
//class="correctness">Respuesta correcta: -2</div>', STICKY, MOUSEOFF, CAPTION, '
//Respuesta correcta', FGCOLOR, '#FFFFFF');" onmouseout="return nd();" 
//name="resp636911_2" value="-2" size="2" type="text">


$cont = file_get_contents('../test_files/answer.php');
$patterns = array();
$patterns[0] = '/onmouseover="return overlib('."'/";
$patterns[1] = "/', STICKY, MOUSEOFF, CAPTION, 'Respuesta correcta', FGCOLOR, '#FFFFFF');".'" onmouseout="return nd();"/';
$replacements = array();
$replacements[0] = '>';
$replacements[1] = '';
echo preg_replace($patterns, $replacements, $cont);

?>

HTML のフラグメントは、コードの先頭にあるコメントでターゲットにしています。

4

1 に答える 1

0

まず、正規表現パターンのすべての特殊文字をエスケープする必要があります。ここで確認できる詳細: http://www.regular-expressions.info/characters.html

このコードを試してください:

$cont = '<input class="correct" readonly="readonly" onmouseover="return overlib(\'<div 
class="correctness">Respuesta correcta: -2</div>\', STICKY, MOUSEOFF, CAPTION, \'Respuesta correcta\', FGCOLOR, \'#FFFFFF\');" onmouseout="return nd();" 
name="resp636911_2" value="-2" size="2" type="text">';

$patterns = array();
$patterns[0] = "/onmouseover=\"return overlib\(\'/s";
$patterns[1] = "/\'\, STICKY\, MOUSEOFF\, CAPTION\, \'Respuesta correcta\', FGCOLOR\, \'#FFFFFF\'\);\"\sonmouseout=\"return nd\(\);\"/";

$replacements = array();
$replacements[0] = '>';
$replacements[1] = '';

$var = preg_replace($patterns, $replacements, $cont);
var_dump($var);
于 2012-11-02T03:27:06.870 に答える