我有一个字符串"9间卧室在那所房子“,但它可以是任何其他的,但卧室关键字将留下来(床,床,卧室,卧室等) <-这是$search_array变量
我已经使用explode将其转换为数组
我需要找一个词“卧室”,看看旁边有没有数字。
假设分解后的数组是- (9,卧室,在,那个,房子),我如何检查它旁边的数字
我使用了下面的代码,并且在函数中使用了它,因此$array =& $this->search_array
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张床“。
有没有什么方法可以检查数组中是否有下一个/上一个值,或者做点什么让它正常工作?
谢谢
发布于 2012-06-19 16:12:34
您可以使用正则表达式来执行此任务:
([0-9]+) +(bed|beds|bedroom|bedrooms)将找到一个至少包含一个数字的数字,然后是任意数量的空格,最后是那些床上单词中的一个。
发布于 2012-06-19 16:13:04
我认为你应该检查数组的长度,因为当你在"9张床“上运行函数时,key+1将是2,而数组只有0和1的位置。你可以在你内部的if-else条件中添加一个条件。
发布于 2012-06-19 16:16:55
使用正则表达式。例如,要从每个输入中获取床位数:
$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";
}
}上面的正则表达式匹配一个或多个数字(我们希望将其隔离),后面是任意数量的空格,然后是您提到的任何触发词。
。
https://stackoverflow.com/questions/11096853
复制相似问题