找到Word首先在php中

时间:2016-04-14 04:43:59

标签: php

我有2个字,例如%sku%%any%,将在网站网址结构中使用。

这些数据将保存在数据库中,我需要找出最先出现的数据。

E.g。

在下面的网址%sku%首先

http://example.com/%sku%/product/%any%

在下面的网址%any%首先出现

http://example.com/%any%/product/%sku%

此外,我不能确定结构是否一致,它可能像下面的任何一样:

  

http://example.com/%sku%/product/%any%
   http://example.com/%any%/product/%sku%
   http://example.com/%any%/%sku%
   http://example.com/product/%sku%
   http://example.com/product/%any%

我想检查哪个是第一个,哪个是最后一个..但%sku% and%任何%`是由我定义的...所以我可以100%确定将要使用这些标签。

2 个答案:

答案 0 :(得分:3)

以下代码将返回指定$attributes数组中的第一个和最后一个项目。

$string = 'http://example.com/%sku%/product/%any%';

// values to check for
$attributes = ['%sku%', '%any%'];

$results = array();
foreach($attributes as $attribute)
{
   // Get position of attribute in uri string
   $pos = strpos($string, $attribute);

   // if it exists we add it to the array with the position
   if($pos)
   {
      $results[$attribute] = $pos; 
   }
}

// Get the first occuring attribute
$firstOccuringAttribute = array_search( min($results), $results);

// Get the last occuring attribute
$lastOccuringAttribute = array_search( max($results), $results);

这可以重构为更具可读性的东西:

$uri = 'http://example.com/%sku%/product/%any%';
$attributes = ['%sku%', '%any%'];

$lastAttribute = getLastAttribute($uri, $attributes);
$firstAttribute = getFirstAttribtue($uri, $attributes);


function getAttributeWeighting($uri, $attributes)
{
    $results = array();
    foreach($attributes as $attribute)
    {
        $pos = strpos($uri, $attribute);

        if($pos)
        {
            $results[$attribute] = $pos; 
        }
    }

    return $results;
}

function getFirstAttribute($uri, $attributes)
{
    $attributeWeighting = getAttributeWeighting($uri, $attributes);

    return array_search( min($attributeWeighting), $attributeWeighting);
}

function getLastAttribute($uri, $attributes)
{
    $attributeWeighting = getAttributeWeighting($uri, $attributes);

    return array_search( max($attributeWeighting), $attributeWeighting);
}

答案 1 :(得分:2)

只需使用strpos

即可

类似的东西:

$URL = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$posOfSku=strlen($URL);
$posOfAny=strlen($URL);

if(strpos($URL ,'%sku%') !== false) {
    $posOfSku = strpos($URL ,'%sku%');
}
if(strpos($URL ,'%any%') !== false) {
    $posOfAny= strpos($URL ,'%any%');
}

$result =  ($posOfAny < $posOfSku) ? 'any came 1st' : 'sku came 1st';
echo $result;