跟进我的上一个问题@ stackoverflow.com/questions/7049245/
我得到了一些答案以及我正在寻找的完美正则表达式代码。但现在我遇到了一个新问题,我似乎无法使用 PHP
preg_replace()
运行任何正则表达式代码。我一直在寻找但没有成功。
我当前的PHP代码是:
$nclist = file_get_contents('**REMOVED LINK**');
$thenc = explode("\n",$nclist);
foreach ($thenc as $row)
{
$nc .= $row."<br> ";
}
$search = array (
'^(.*)(\((?:-?\d{1,4}\.\d{1}(?:, |\))){3} to \((?:-?\d{1,4}\.\d{1}(?:, |\))){3})(?= distance)(.*)$/ && do { my ($pre, $no_numbers, $post) = ($1, $2, $3); $no_numbers =~ s/\d+\.\d+/#/g; print "$pre$no_numbers$post\n"; }'
);
$replace = array ('');
$final = $nc;
echo preg_replace($search, $replace, $final);
print_r($cheat);
它可以很好地显示 $nc 的输出,但不想对其应用正则表达式。
另外,如果您没有看到我的最后一个问题,我需要所有匹配的部分
(-90.8, 64.0, 167.5)至(-90.7, 64.0, 167.3)
已删除,或至少被审查为
(#,#,#)到(#,#,#)
同样,上一个问题的正则表达式答案运行得很好,所以我想使用它。
编辑1: 啊,我记得我有
print_r()
在那里测试其他东西,所以我删除了它,但现在它只是一个空白页。
对于每一行:
$row = preg_replace( '/(?:\-|\b)\d{1,4}.\d{1}\b(?=.*distance)/', '#', $row );
完整代码:
$contents = file_get_contents('http://dreamphreak.com/pwn9/yasmp/nocheat.php');
$rows = explode( "\n", $contents );
$new_contents = '';
foreach ( $rows as $row ) {
$row = preg_replace( '/(?:\-|\b)\d{1,4}.\d{1}\b(?=.*distance)/', '#', $row );
$new_contents .= $row."<br> ";
}
echo $new_contents;
这不是更容易吗?
$contents = file_get_contents('http://dreamphreak.com/pwn9/yasmp/nocheat.php');
$contents = preg_replace( '/\([0-9\.,\- ]+\) to \([0-9\.,\- ]+\)/', '', $contents );
echo $contents;
在使用“无人”提供给您的代码时,您遇到页面无法加载的问题的原因是您达到了服务器的最大页面执行时间。它可以处理少量数据样本,因为它可以在 30 秒内完成(或无论您的服务器的最大执行时间是多少。我的是 30),但大量的实时数据处理时间太长。
我尝试对两者进行速度比较,但由于超时,我也无法让其他解决方案工作。相反,我从您的实时数据中抽取了 40 行样本,并使用它对两种解决方案进行了速度测试。
我的解决方案在 10 次运行中平均耗时 0.0001 秒 没有人的解决方案在 10 次运行中平均耗时 0.0007 秒
我建议找到一种方法来完成整个事情,而不必单独循环每一行。