2013-07-10 2 views
-3

Я пытаюсь получить два значения с помощью PHP регулярных выражений в этом виде строк:Извлечь два значения из текста

bla bla bla 

Measures: 10,4 cm x 9 cm. 

bla bla bla 

Результаты:

1: 10,4 (note: decimal values with comma) 
2: 9 

Узор Measures: X cm x Y cm. всегда одинаков.

Я пытался: '@^(?: Measures:)? ([^.] +) @', Но я не могу улучшить его, чтобы получить первое и второе значения.

спасибо!

+0

Я не понимаю, что вы хотите измерить? или выдержка из «бла-бла-бла»? –

+2

Это не _do мой сайт job_. ;) – Leri

+0

@PLB По-видимому, другие более чем обязаны это делать. Я желаю, чтобы люди чувствовали себя так, когда я задавал свои более конкретные и неурегулированные вопросы. – BLaZuRE

ответ

1

Используйте это:

$pattern = '~Measures: ([0-9]+,*[0-9]*) cm x ([0-9]+,*[0-9]*)~'; 
preg_match_all($pattern, $txt, $matches); 
$widths = $matches[1]; 
$heights = $matches[2]; 
+0

Это не будет соответствовать, так как '9 см' не имеет запятой. Теперь, почему бы вам не написать его? – HamZa

+0

Запястья, по-видимому, необязательны, так как вы можете иметь 9 см. Десятичное число также может быть необязательным, исходя из того же значения. – BLaZuRE

+0

К сожалению, это не так. спасибо. зафиксировали это. @HamZa Что значит CV? – hek2mgl

0
if (preg_match('/Measures: (\S+) cm x (\S+) cm/', $subject, $regs)) { 
    $height = $regs[1]; 
    $width = $regs[2]; 
} 
Смежные вопросы