您應該首先獲取每個文件的內容,然後使用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)
然後只要你喜歡,你應該diff的版本。
你有試過什麼嗎?如果是這樣,請將其包含在您的問題中 – Epodax
您發佈的兩行都沒有開頭。你可以請澄清你的問題 – baao
@Epodax:由stephenmorley.org差異類,但這個類使差異逐行,沒有選項來設置搜索文本來檢查(「一些文本」) – Saibamen