将此伪代码转换为PHP

时间:2011-04-15 23:39:04

标签: php

我正在尝试编写一个基本上从句子中获取“属性”的函数。这些是参数。

$q = "this apple is of red color"; OR $q = "this orange is of orange color";
$start = array('this apple', 'this orange');
$end = array('color', 'color');

这是我想要的功能:

function prop($q, $start, $end)
{
   /*
    if $q (the sentence) starts with any of the $start
    and/or ends with any of the end
    separate to get "is of red"
   */

}

我不仅遇到了代码本身的问题,我也不确定如果任何数组值以(不仅仅包含)提供的$ q开头,我也不确定如何搜索。

任何输入都会有所帮助。 感谢

2 个答案:

答案 0 :(得分:1)

这样的事情应该有效

function prop($q, $start, $end) {
  foreach ($start as $id=>$keyword) {
    $res = false;
    if ((strpos($q, $keyword) === 0) && (strrpos($q, $end[$id]) === strlen($q) - strlen($end[$id]))) {
      $res = trim(str_replace($end[$id], '', str_replace($keyword, '', $q)));
      break;
      }
    }
  return $res;
  }

所以在你的情况下这个代码

$q = "this orange is of orange color";
echo prop($q, $start, $end);

打印

  

是橙色

和此代码

$q = "this apple is of red color"; 
echo prop($q, $start, $end);

打印

  

是红色的

此代码

$start = array('this apple', 'this orange', 'my dog');
$end = array('color', 'color', 'dog');

$q = "my dog is the best dog"; 
echo prop($q, $start, $end);

将返回

  

是最好的

答案 1 :(得分:0)

使用strposstrrpos。如果它们返回0,则字符串位于开头/结尾。

并非您必须使用=== 0(或!== 0进行反向测试),因为如果找不到字符串,false会返回0 == false0 !== false会{{1}} 1}}。