Как вырезать только нужные цифры?
Есть строка типа
.class { width: 10px !important } .class2 {max-width:100px;} .class3 { width: 20px; }
Мне нужно получить только цифры 10 и 20 , то есть те которые идет после width: и до px, но если перед width стоит символ - , значит его пропускаем.
У меня лишь удалось составить такое выражение:
preg_match_all('!width:(.+?)px!si', $str, $arr);
Но оно не работает так как мне бы хотелось...
Например, оно может извлечь мне почти всю строку от width: и до первого px, соостветвенно туда попадают остальные символы, а мне нужны только цифры если после них были символы px
Буду очень благодарен за помощь!
Ответы (2 шт):
Автор решения: InDevX
→ Ссылка
$str = '.class { width: 10px !important } .class2 {max-width:100px;} ';
$str .= ' .class3 { width: 20px; } .class3 { width: -20px; }';
preg_match_all('!(?<!-)width:(\s*([1-9]\d+)\s*)px!si', $str, $arr);
print_r($arr[2]);
Автор решения: Эдуард
→ Ссылка
Добавьте ретроспективную проверку: ~(?<!-)width:\h*\K\d+(?=px)~
UPD: На PHP будет так:
$str = '.class { width: 10px !important } .class2 {max-width:100px;} .class3 { width: 20px; }';
preg_match_all('~(?<!-)width:\h*\K\d+(?=px)~', $str, $arr);
print_r($arr[0]);