【问题标题】:Regex + Php preg_replace正则表达式 + PHP preg_replace
【发布时间】:2015-10-29 04:30:49
【问题描述】:

跟进我上一个问题@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 的输出,但不想对它应用正则表达式。请提供有关如何使其工作的任何 php 帮助?谢谢

另外,如果你没有看到我的最后一个问题,我需要所有匹配的部分

(-90.8, 64.0, 167.5) 到 (-90.7, 64.0, 167.3)

删除,或至少审查到

(#, #, #) 到 (#, #, #)

再一次,上一个问题的正则表达式答案完美无缺,所以我想使用它。

编辑1: 啊,我记得我在那里有 print_r 来测试其他东西,所以我删除了它,但现在它只是一个空白页。

【问题讨论】:

    标签: php regex preg-replace


    【解决方案1】:

    对于每一行:

    $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;
    

    【讨论】:

    • @DreamPhreak 第一个呢?
    • 现在它根本不加载页面(无限加载)。
    • @DreamPhreak 我刚刚尝试了代码,将$contents = file_get_contents(... 替换为$contents = '{a few sample lines}' 并得到了正确的结果。你确定你的文件不是空的吗?
    • 是的,我确定:dreamphreak.com/pwn9/yasmp/nocheat.php,我还更改了原始原始文件的链接,以进行测试
    • 等一下,我也试过了,用了几行样例,效果 100%。所以,现在我必须想办法获取文件,而不是在 $contents 中放入 10,000 行 lol。
    【解决方案2】:

    这不是更容易吗?

    $contents = file_get_contents('http://dreamphreak.com/pwn9/yasmp/nocheat.php');
    $contents = preg_replace( '/\([0-9\.,\- ]+\) to \([0-9\.,\- ]+\)/', '', $contents );
    
    echo $contents;
    

    Working 在我的网络服务器上。

    您在使用“Nobody”提供的代码时无法加载页面的原因是您达到了服务器的最大页面执行时间。它可以处理一小部分数据样本,因为它可以在 30 秒内完成(或者无论您的服务器的最大执行时间是多少。我的是 30 秒),但是处理大量实时数据的时间太长了。

    我尝试在两者之间进行速度比较,但由于超时,我也无法让其他解决方案工作。相反,我从您的实时数据中抽取了 40 行样本,并使用它对两种解决方案进行了速度测试。

    我的解决方案在 10 次运行中平均耗时 0.0001 秒 没有人的解决方案在 10 次运行中平均为 0.0007 秒

    我建议找到一种方法来完成整个事情,而不必单独遍历每一行。

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 2011-04-11
      • 1970-01-01
      相关资源
      最近更新 更多