在某个字符串

时间:2017-06-21 14:32:38

标签: php

所以我有这个字符串:

Best location using 168 cars + cleaning

' 168'是我想从这个字符串中提取的部分。

我有大约80次出现这个字符串,所有字符串都来自&xxx'汽车到' xxx'汽车(所以,2或3个数字)。但是,在每个字符串中,' cars'在我想回来的号码之后。

使用PHP实现这一目标的最佳方式是什么?

3 个答案:

答案 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 cars1234 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;字符串。