所以我有这个字符串:
Best location using 168 cars + cleaning
' 168'是我想从这个字符串中提取的部分。
我有大约80次出现这个字符串,所有字符串都来自&xxx'汽车到' xxx'汽车(所以,2或3个数字)。但是,在每个字符串中,' cars'在我想回来的号码之后。
使用PHP实现这一目标的最佳方式是什么?
答案 0 :(得分:1)
最好的方法是在文本上做一个简单的preg_match。
请参阅教程:http://php.net/manual/en/function.preg-match.php
<?php
$string = 'Best location using 168 cars + cleaning';
$pattern = '/(\d{2,3}+) cars/';
preg_match($pattern, $string, $match);
echo $match[1];
此正则表达式返回单词cars之前所有长度为2到3的数字。
您可以根据需要更改长度,\ d表示所有数字。
答案 1 :(得分:0)
最简单的方法可能是通过preg_match()
。寻找一个空格,一个或多个数字,一个空格,然后是汽车这个词。使用parens捕获数字。这给你这样的模式:
' (\d+) cars'
然后使用第三个参数将其传递给preg_match()
以捕获带括号的子字符串:
if (preg_match('/ (\d+) cars/', $str, $match)) {
echo "your num is: " . $match[1] . "\n";
}
请注意,这也会捕获1 cars
和1234 cars
。如果这是一个问题,并且您希望确保只获得两位或三位数的值,则可以调整模式以明确要求:
' (\d{2,3}) cars'
答案 2 :(得分:0)
我会在空格上爆炸字符串,然后在数组中循环寻找字符串&#34; cars&#34;然后获取此关键值。从这里你知道这个数字将在&#34;汽车&#34;之前。从该键值开始减去1并查看数组。
$original_string = "Best location using 168 cars + cleaning";
$string = explode(" ", $original_string);
foreach ($string as $key => $part) {
if($part == "cars") {
$number = $string[$key-1];
}
}
说明: $ original_string是数字未知的整个字符串。
$ string是$ original_string的数组,每个单词都在其自己的数组
中我们遍历这个数组,寻找字符串&#34; cars&#34;并获得其关键价值。 如果我们找到它成功,那么我们转到键值减1来找到数字。我们这样做是因为我们知道这个数字出现在&#34;汽车&#34;字符串。