2016-08-12 83 views
0

問題:我需要檢查關鍵短語的字符串,如果它包含這些短語,請分配給某個標記名稱。查找字符串中的關鍵短語:PHP

我正在使用WordPress使用PHP。

,我已經創建至今是代碼:

/* WOMENS SPORTSWEAR TAGS */ 
function map_womens_sportswear_tags($tag_name) { 
$tags = array(
    'Womens Tracksuit Pants' => array( 
     'Tracksuit Pants', 
     'Sweatpants', 
     'Shell Pants', 
     'Jogger Pants', 
     'Jogging Bottoms', 
     ), 
    'Womens Tracksuit Jackets' => array( 
     'Tracksuit Jacket', 
     ), 
    'Womens Fleece Jacket' => array(
     'Fleece', 
     ), 
    ); 

foreach($tags as $tag => $values) { 
    $current_tag = $tag; // Current tag is the name of the tag, like Womens Sports Shoe or Womens Tracksuit Pants 
    foreach($values as $value) { 
     if (strtolower($value) == strtolower($tag_name) || stripos($tag_name, $current_tag )) { 
      return $current_tag; // Returns tag name, i.e. 'Womens Sports Shoe' or 'Womens Tracksuit Pants' 
      break; 
     } 
    } 
} 
return $tag_name; 
} 

因此,如果一個字符串包含字的慢跑褲,分配給婦女運動服褲子。我已經使用stripos來達到這個目的,但是我無法讓代碼工作。

請有人指出我正確的方向,因爲我是新來的編碼。提前謝謝了。

+0

標籤的第一次相遇後,你正在使用'return',它從函數返回'$ current_tag'。如果我理解正確,你應該把標籤放到一個數組中,並在函數結束時返回整個數組。 –

+1

在返回後使用中斷沒有意義,語句將無法訪問。在if(stripos()!== false)中使用它作爲第二個參數; –

回答

0

看來你只是混淆了你的if語句variabled:

if (strtolower($value) == strtolower($tag_name) || stripos($tag_name, $current_tag )) { 

應該

if (strtolower($value) == strtolower($tag_name) || stripos($tag_name, $value )) { 
+0

感謝所有 - 特別是A.L. – hs1972

+0

您的編輯完美地適用於我剛纔所做的測試。 – hs1972

+0

總是很高興我可以幫忙。請將我的答案標記爲已接受。 –

0

如果我理解正確,那麼您正在搜索與傳遞給您的函數的$tag_name匹配的標籤。 在你stripos函數(如果我是正確的),你有inverted parameters: 1串 2.您的關鍵字字符串中找到

檢查結果是!== false,因爲只是一個簡單的,如果,結果0(在字符串的第一次出現時)將返回錯誤(See the red section in the doc)。

0

試試這個:

foreach($tags as $tag => $values) { 
    $current_tag = $tag; // Current tag is the name of the tag, like Womens Sports Shoe or Womens Tracksuit Pants 
    foreach($values as $value) { 
     if (strtolower($value) == strtolower(trim($tag_name)) || stripos(trim($tag_name), $current_tag )) { 
      return $current_tag; // Returns tag name, i.e. 'Womens Sports Shoe' or 'Womens Tracksuit Pants' 
      break; 
     } 
    } 
}