我想区分2个文件并忽略PHP中没有撇号(“text”)的检查行
例如: 文件1:
START
LTEXT "Tool Version:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT
EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT
文件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
我想检查工具版本和Wersjashanzędzia:字符串之间是否有任何区别。
注意:文件没有逐行相同的模式 - 我想从文件中包含START的行启动diff行。
答案 0 :(得分:1)
您应首先获取每个文件的内容,然后使用具有适当模式的preg_match
函数来查找版本行和版本字符串。
$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));
输出:
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)
然后你应该随意区分版本。
答案 1 :(得分:0)
也许这会给出一个重点:
$str1 = 'LTEXT "Tool Version:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT
EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT';
$str2 = 'LTEXT "Wersja narzędzia:", IDC_STATIC, 70, 150, 80, 10, SS_RIGHT
EDITTEXT IDC_STATIC_TIME, 155, 50, 210, 10, ES_LEFT';
$shortStr1 = substr($str1, 23);
$shortStr2 = substr($str2, 28);
echo "\n";
echo substr_compare($shortStr1, $shortStr2, 0, strlen($shortStr1));
echo "\n";
echo substr_compare($shortStr2, $shortStr1, 0, strlen($shortStr2));
我认为这 - 或者至少是这个想法 - 会引导你找到答案。 下次提供更多信息和您已经尝试过的内容,这里的许多人甚至会提供完整的解决方案! 但为此,你必须展示你已经获得并已经尝试过的东西。没有人愿意做你付出的工作,但是如果你有任何问题和努力尝试,很多人愿意帮助你!