doudao1282 2015-08-03 09:56
浏览 33
已采纳

如何在PHP中区分文件撇号文本

I want to diff 2 files and ignore checking lines that doesn't have apostrophe ("text") in PHP

For example: File 1:

START
    LTEXT "Tool Version:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT
        EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT

File 2:

/*
 *    Translated by Saibamen
 *
 /

START    
    LTEXT "Wersja narzędzia:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT
        EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT

I want to check if there's any difference between Tool Version: and Wersja narzędzia: strings.

Note: Files doesn't have this same schemas line by line - I want to start diff lines from line that have START in file.

  • 写回答

2条回答 默认 最新

  • douqipi9704 2015-08-03 10:20
    关注

    You should first get content of each file and then use preg_match function with proper pattern to find version line and version string.

    $fileContent1 = <<<TXT
    dummy
    dummy
    LTEXT "Tool Version:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT
    
    
    dummy
    TXT;
    
    $fileContent2 = <<<TXT
    dummy
    LTEXT "Wersja narzędzia:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT
    dummy
    dummy
    
    TXT;
    
    function diff_versions($leftContent, $rightContent) {
        $diff = true;
        $leftVersion = null;
        $rightVersion = null;
    
        $pattern = '/LTEXT "(Tool Version|Wersja narzędzia):", (.*)\R?/';
    
        if (preg_match($pattern, $leftContent, $matches) !== 1) {
            throw new Exception('Left content has no version line.');
        }
    
        $leftVersion = $matches[2];
    
        if (preg_match($pattern, $rightContent, $matches) !== 1) {
            throw new Exception('Right content has no version line.');
        }
    
        $rightVersion = $matches[2];
    
        return array(
            'diff' => $leftVersion === $rightVersion,
            'leftVersion' => $leftVersion,
            'rightVersion' => $rightVersion,
        );
    }
    
    var_dump(diff_versions($fileContent1, $fileContent2));
    


    Output:

    array (size=3)
       'diff' => boolean true
       'leftVersion' => string 'IDC_STATIC, 70, 150, 80, 10, SS_RIGHT EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT' (length=89)
       'rightVersion' => string 'IDC_STATIC, 70, 150, 80, 10, SS_RIGHT EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT' (length=89)
    

    And then you should diff versions as you like.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?