preg_replace("/echo (.*?)'(.*?);/i", "print \\2, ,\\1;", $ster);
Найти: echo $pert'nade; и заменить на: print nade, ,$pert;
Не могу понять почему не работает.
preg_replace("/echo (.*?)'(.*?);/i", "print \\2, ,\\1;", $ster);
preg_replace("/echo (.*)\'(.*);/i", "print \\2, ,\\1;", $ster)результат
print nade, ,$pert;
Цитата (walerus @ 27.10.2014 - 00:49) |
preg_replace("/echo (.*)\'(.*);/i", "print \\2, ,\\1;", $ster)результат print nade, ,$pert; |
<?phpпопробуйте
$string = "echo \$pert'nade;";
$string = preg_replace("/echo (.*)\'(.*);/i", "print \\2, ,\\1;", $string);
echo "|$string|";
die;
?>
Цитата (walerus @ 27.10.2014 - 01:11) |
Давайте всю часть кода, как вы получаете текст, что в переменных и т.д., я выше напиал результат работы скрипта ... вот мой "тест скрипт" <?phpпопробуйте |
<?php
if (isset($_POST['submit'])) {
$code = $_POST['code'];
$code=str_replace("$", "\$", $code);
$code=str_replace("<?php?>", "", $code);
$code=str_replace("<??>", "", $code);
$code=str_replace("print", "echo", $code);
$code=str_replace("time()", "$_SERVER[’REQUEST_TIME’]", $code);
$code=str_replace("preg_replace", "str_replace", $code);
$code=str_replace("str_replace", "strtr", $code);
$code=str_replace("$i++","++$i",$code);
$code=str_replace("\r","",$code);
$code=preg_replace("/echo(ereg_replace((.*?),(.*?),(.*?)));/i","echo(str_replace(\\1,\\2,\\3));",$code);
$code=preg_replace("/echo (.*?).\'(.*?)\'.(.*?);/i", "echo \\1, ' ', \\2;", $code);
$code=preg_replace("/if(strlen((.*?)) > (.*?))/i", "if(isset(\\1{\\2}))", $code);
$code=preg_replace("/global (.*?);/i", "global \\1; unset($\\1);", $code);
$code=preg_replace("/$(.*?)[(.*?)]/i", "$\\1['\\2'] ", $code);
$code=preg_replace("/array_key_exists(\'(.*?)\', $(.*?))/i", "!isset($\\2['\\1'])", $code);
$code=preg_replace("/$a=(.*?) $(.*?);/i", "$a='\\1 '.$\\2;", $code);
$code=preg_replace("/$a=$(.*?) (.*?);/i", "$a=$\\1.' \\2';", $code);
$code=preg_replace('/eregi(\'(.*?)\',$(.*?))/i', 'preg_match("/\\1/im",$\\2)', $code);
$code=preg_replace("/while (list($(.*?), $(.*?)) = each($(.*?)))/i", "foreach($\\3 as $\\1=>$\\2)", $code);
$code=preg_replace('/substr_compare((.*?),(.*?),(.*?),(.*?))/i', 'strpos(\\1,\\2)===\\3', $code);
echo $code;
}else{
header("Location: http://localhost ");
exit;
}
?>