я следующая строкаРегулярное выражение для экрана Решение
540x360 [PAR 1:1 DAR 3:2]
Результат Я хочу это
540x360
Как я могу сделать, пожалуйста предложить, так что в будущем я буду в состоянии решить эти проблема моя.
я следующая строкаРегулярное выражение для экрана Решение
540x360 [PAR 1:1 DAR 3:2]
Результат Я хочу это
540x360
Как я могу сделать, пожалуйста предложить, так что в будущем я буду в состоянии решить эти проблема моя.
Если вы действительно хотите использовать регулярное выражение, которое вы можете использовать:
$string = "540x360 [PAR 1:1 DAR 3:2]";
$matches = array();
preg_match('/^(\d+x\d+)/i', $string, &$matches);
echo $matches[0];
$split = explode(' ', $string);
echo $split[0];
Уважаемый понижающего избиратель, любезно объясняет, почему вы вниз проголосовали меня. С уважением, karim79. – karim79
Нет необходимости CONVER строку в массив, который может быть очень раздражает ,
sscanf($str, "%s ", $resolution);
// $resolution = 540x360
Это может быть легко изменен, чтобы получить целые значения разрешения:
sscanf($str, "%dx%d ", $resolution_w, $resolution_h);
// $resolution_w = 540
// $resolution_h = 360
<?php
function extractResolution($fromString, $returnObject=false)
{
static $regex = '~(?P<horizontal>[\d]+?)x(?P<vertical>[\d]+?)\s(?P<ignorable_garbage>.+?)$~';
$matches = array();
$count = preg_match($regex, $fromString, $matches);
if ($count === 1)
{
/*
print_r($matches);
Array
(
[0] => 540x360 [PAR 1:1 DAR 3:2]
[horizontal] => 540
[1] => 540
[vertical] => 360
[2] => 360
[ignorable_garbage] => [PAR 1:1 DAR 3:2]
[3] => [PAR 1:1 DAR 3:2]
)
*/
$resolution = $matches['horizontal'] . 'x' . $matches['vertical'];
if ($returnObject)
{
$result = new stdClass();
$result->horizontal = $matches['horizontal'];
$result->vertical = $matches['vertical'];
$result->resolution = $resolution;
return $result;
}
else
{
return $resolution;
}
}
}
$test = '540x360 [PAR 1:1 DAR 3:2] ';
printf("Resolution: %s\n", var_export(extractResolution($test, true), true));
/*
Resolution: stdClass::__set_state(array(
'horizontal' => '540',
'vertical' => '360',
'resolution' => '540x360',
))
*/
printf("Resolution: %s\n", var_export(extractResolution($test, false), true));
/*
Resolution: '540x360'
*/
Nice. Это особенно полезно, если разрешение не находится в начале или содержит пробелы: «800 x 600» плохо взорвется, но регулярное выражение может быть легко адаптировано для его поддержки. Я бы, вероятно, написал его как '/ (\ d +) \ s * x \ s * (\ d +)/i', чтобы зафиксировать оба числа. Кроме того, добро пожаловать в переполнение стека. – Kobi