Есть ли способ, чтобы выполнить ту же самую операцию без дублирования моего кода
Есть всегда два способа сделать это:
- Буфер результата выполнения - вместо выполнения нескольких раз.
- Кодировать повторение - извлекать параметры из кода.
В программировании вы обычно пользуетесь обоими. Например буферизация операции файлового ввода/вывода:
$buffer = file_get_contents($url);
И для согласования, вы закодировать повторение:
$match = function ($what) use ($buffer) {
$pattern = sprintf('/property="og:%s" content="(.*?)"/', $what);
$result = preg_match($pattern, $buffer, $matches);
return $result ? $matches[1] : NULL;
}
$match('video');
$match('image');
Это является только примером, чтобы показать, что я имел в виду. Это немного зависит от того, сколько вы хотите сделать это, например. более поздняя версия позволяет заменить соответствие другой реализацией, например, с помощью парсера HTML, но на данный момент вы можете найти слишком много кода для того, что вам нужно сделать, и только идти с буферизацией.
E.g. могут применяться и следующие:
$buffer = file_get_contents($url);
$mask = '/property="og:%s" content="(.*?)"/';
preg_match(sprintf($mask, 'video'), $buffer, $matchesVideo);
preg_match(sprintf($mask, 'image'), $buffer, $matchesThumb);
Надеюсь, что это поможет.
Конечно, присвойте результат file_get_contents переменной. – datasage
, но вам нужно будет сделать два раза preg_match, так как это не та же операция. но yeat, делая '$ content = file_get_contents ($ url);' будет экономить много раз –