首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串php旁边的数字

字符串php旁边的数字
EN

Stack Overflow用户
提问于 2012-06-19 16:06:54
回答 4查看 112关注 0票数 0

我有一个字符串"9间卧室在那所房子“,但它可以是任何其他的,但卧室关键字将留下来(床,床,卧室,卧室等) <-这是$search_array变量

我已经使用explode将其转换为数组

我需要找一个词“卧室”,看看旁边有没有数字。

假设分解后的数组是- (9,卧室,在,那个,房子),我如何检查它旁边的数字

我使用了下面的代码,并且在函数中使用了它,因此$array =& $this->search_array

代码语言:javascript
复制
if($array =& $this->search_array){
$bedroom_keywords = array('bed', 'beds', 'bedroom', 'bedrooms');
foreach($this->bedroom_keywords as $beds)
        {   
            // if successful in assigning key find a 
            // number in next and previous positions
            if($key = array_search($beds, $array))
            {
                if($next = $array[$key+1])
                {
                    echo $next;
                }
                elseif($prev = $array[$key-1])
                {
                    echo $prev;
                }
            }
        }
}

但是我得到了这个错误:

注意:未定义的偏移量:2在第92行的/Users/User/Sites/parser.php中9ad_type:

当我只使用2个代币时,即"9张床“。

有没有什么方法可以检查数组中是否有下一个/上一个值,或者做点什么让它正常工作?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-19 16:12:34

您可以使用正则表达式来执行此任务:

代码语言:javascript
复制
([0-9]+) +(bed|beds|bedroom|bedrooms)

将找到一个至少包含一个数字的数字,然后是任意数量的空格,最后是那些床上单词中的一个。

票数 1
EN

Stack Overflow用户

发布于 2012-06-19 16:13:04

我认为你应该检查数组的长度,因为当你在"9张床“上运行函数时,key+1将是2,而数组只有0和1的位置。你可以在你内部的if-else条件中添加一个条件。

票数 2
EN

Stack Overflow用户

发布于 2012-06-19 16:16:55

使用正则表达式。例如,要从每个输入中获取床位数:

代码语言:javascript
复制
$inputs = array('1 bed', '22 beds', '1 bedROOM', '99   beDRooms', 'beds');
foreach($inputs as $input) {
    if (preg_match('/(\d+)\s+bed($|s|room|rooms)/i', $input, $matches)) {
        echo "$input => ".$matches[1]."\n";
    }
    else {
        echo "$input => **no match**\n";
    }
}

上面的正则表达式匹配一个或多个数字(我们希望将其隔离),后面是任意数量的空格,然后是您提到的任何触发词。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11096853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档