由于我必须从产品说明中提取属性“ inches”,因此我需要一个函数来提取其较小的空间重复出现次数和“。”之间的子字符串。
这是WP插件“全导入”的PHP编辑器。
$str = "SIM UMTS ITALIA 15.5" BLACK";
$from = " ";
$to = '"';
function getStringBetween($str,$from,$to){
$sub = substr($str, strpos($str,$from)+strlen($from),strlen($str));
return substr($sub,0,strpos($sub,$to));
}
我期望:15.5
结果:SIM UMTS ITALIA 15.5
答案 0 :(得分:0)
基于对答案的评论,这是一个更好的解决方案,因为当与$to
字符串不匹配时,它将不返回任何内容,而不是像原始解决方案那样不返回整个字符串。
function getStringBetween($str,$from,$to){
if (preg_match("/$from([^$from]+)$to/", $str, $matches))
return $matches[1];
else
return '';
}
$str = 'SIM UMTS ITALIA 35GB BLACK';
echo getStringBetween($str, ' ', 'GB') . "\n";
$str2 = 'SIM UMTS ITALIA IPHONE 2 MEGAPIXEL';
echo getStringBetween($str2, ' ', 'GB') . "\n";
$str3 = 'SIM UMTS ITALIA 15.5" BLACK';
echo getStringBetween($str3, ' ', '"') . "\n";
输出:
35
15.5
原始答案
使用preg_replace
可能更容易些,在"
之前查找一些数字或句点,然后从字符串中删除所有其他字符,例如
$str = 'SIM UMTS ITALIA 15.5" BLACK';
echo preg_replace('/^.*?(\d+(\.\d+)?)".*$/', '$1', $str);
输出:
15.5
更一般地(如果$from
是字符):
function getStringBetween($str,$from,$to){
return preg_replace("/^.*$from([^$from]+)$to.*$/", '$1', $str);
}