我有一个字符串:
$string = 'Hello world Vol. 3.5 ispum 99';
我想在 vol
项之后获取 float /整数值,所以我最终得到:
$value = '3.5';
到目前为止我尝试了什么
我能想到的唯一方法是 explode(' ', $string)
并检查 Vol.
之后的迭代是否为 float 。
是否有不同/更好的方法?
原因
我通过 RSS 提取了大量带有随机帖子标题的帖子。我的目标是确定每个帖子与哪个卷相关。术语 volume 在每个帖子中都不同,因此我们可以有:Vol.
、volume
、episode
、书
等
最佳答案
您可以为此使用正则表达式:
$string = 'Hello world Vol. 3.5 ispum 99';
if (preg_match('/(Vol\.|volume|episode)\s*(\d+(\.\d+)?)/i', $string, $matches))
var_dump($matches[2]);
(Vol\.|volume|episode)
匹配任何给定的单词\s*
吃掉任意数量的空格(\d+(\.\d+)?)
匹配整数或浮点值
或者更一般地说:
$terms = ['vol.', 'volume', 'episode'];
$terms_quoted = [];
foreach ($terms as $term)
$terms_quoted[] = preg_quote($term, '/');
$string = 'Hello world Vol. 3.5 ispum 99';
if (preg_match('/('.implode('|', $terms_quoted).')\s*(\d+(\.\d+)?)/i', $string, $matches))
var_dump($matches[2]);
关于php - 如果字符串中的单词后的术语是 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357144/