Я создал код, соответствующий атрибуту гигабайта в описании продукта.Проблема в том, что он соответствует всему между [пробелом] и «ГБ», но мне бы хотелось, чтобы он совпадал только с цифрами (а не буквами или чем-то еще) между пробелом и «ГБ».В противном случае ничего не должно возвращаться.
Это для плагина All-import для Wordpress.
//Extract gigabyte
function getFirstGB($str){
//Remove space between numbers and GB
$newString = str_replace(' GB', 'GB', $str);
//Remove period in numbers
$my = str_replace('.', '', $newString);
if (preg_match("/(\d+)GB/", $my, $matches)) {
$check = $matches[1];
} else {
$check = "";
}
if(strlen($check) < 10) {
$media = $check;
}
else {
$media = "";
}
//Add Gb only if it is not empty
if (!empty($media)) {
$island = $media . " Gb";
}
else {
$island = "";
}
echo $island;
}
$media = "Samsung V7 V71700016GBD Memory";
getFirstGB($media);
Для строки: 'V7 V71700016GBD Memory Card' Я ожидаю, что ничего не будет возвращено, но он вернется: 71700016 Гб
Нет проблем с такими строками: "Sony 200GB MP3 10 Вт" Возвращает то, что я хотел: 200 Гб