2016-04-22 2 views
1

Я хочу извлечь строку из строки.Preg Match Extracting

У меня есть следующие строки:

"date-x-days" 

Я хотел бы, чтобы извлечь "x", который может быть любым ИНТ значение

Я уже попробовал эту закономерность: ~ (дата -) * (- дней) ~ Но это только дает мне «дату» и «-друг» назад, но я хочу получить номер.

Как это сделать?

Приветствия, Никлас

+0

Почему не просто '' ~ \ d + ~ ''? –

+0

Вы написали псевдографику своей строки и определили, что именно вы хотите от этой строки, что очень хорошо! Вы также пытались сделать это сами, имея знания, которые у вас есть! Теперь в качестве следующего шага вы можете ввести свое регулярное выражение: https://regex101.com/ и проверить, что именно делает ваше регулярное выражение. Вы также можете проверить это Q & A: http://stackoverflow.com/q/6278296/3933332 и использовать его, чтобы изменить текущее регулярное выражение. – Rizier123

+0

'sscanf (" date-345-days "," date-% d-days ", $ days); echo $ days; ' – Gordon

ответ

0
$returnValue = preg_match('/-(\d+)-/', '[date-454-days]', $matches); 
print_r($matches); 
+0

Это почти хорошо, спасибо! - но в моей строке есть больше текста за [date-3-days] - возможно ли интегрировать дату и дни в шаблон? –

+0

попробуйте этот шаблон: ''/date - (\ d +) - days/'' – ssnake

+0

Отлично! Благодаря! –

2

Это может просто сделать взрываются функцию. попробуйте ниже код

$arr = explode('-','[date-x-days]'); 
echo $arr[1]; 
0

С помощью этого шаблона вы будете ловить каждую часть строки в качестве нового значения, так что если вам нужно изменить что-то вы можете легко сделать это.

preg_match("/(date)-(\d+)-(days)/", "date-45-days", $output_array); 
echo $output_array[2]; //45 

Var_dump(output_array);//= 
array(4 
    0 => date-35-days 
    1 => date 
    2 => 35 
    3 => days 
) 

Посмотрите здесь: http://www.phpliveregex.com/p/frp, как вы можете видеть, что это только ловит, если все части находятся там в порядке.

+0

Отлично! Благодаря! –

Смежные вопросы