Я хочу, чтобы diff 2 файла и игнорировать проверку строк, которые не имеют апостроф («текст») в PHP
Например:
Файл 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
Я хочу проверить, есть ли разница между версией инструмента: и Wersja narzędzia: строки.
Примечание: файлы не имеют одинаковые схемы построчно — я хочу начать разностные строки со строки, которые имеют START в файле.
Вы должны сначала получить содержимое каждого файла, а затем использовать 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)
И тогда вы должны различать версии, как вам нравится.
Может быть, это даст смысл начать с:
$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));
Я думаю, что это — или, по крайней мере, идея — приведет вас к ответу.
В следующий раз предоставьте больше информации и того, что вы уже попробовали, и многие здесь даже предоставят полные решения!
Но для этого нужно показать, что ты уже получил и уже попробовал. Никто не хочет выполнять работу, за которую вам платят, но многие здесь готовы помочь вам, если у вас возникнут проблемы а также достаточно старался!