WordPress — Поиск ключевых фраз в строках: переполнение стека

Проблема: мне нужно проверить строку на наличие ключевых фраз и, если она содержит эти фразы, назначить определенное имя тега.

Я работаю в 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;
}

Поэтому, если строка содержит слова «бег трусцой», присвойте ей женские спортивные штаны. Я использовал стрипы для этой цели, однако я не могу заставить код работать.

Пожалуйста, кто-нибудь может указать мне правильное направление, так как я новичок в кодировании. Спасибо заранее.

0

Решение

Кажется, вы просто перепутали свою переменную в операторе if:

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

должно быть

if ( strtolower( $value ) == strtolower( $tag_name ) || stripos( $tag_name, $value   ) ) {
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;
}
}
}
0

Если я правильно понимаю, вы ищете тег, который соответствует $tag_name перешел к вашей функции.
В твоих стрипах (если я прав) у тебя есть инвертированные параметры:
1. строка
2. Ваше ключевое слово, чтобы найти в строке

Проверьте, если результат !== false потому что с простым if, результатом 0 (при первом появлении строки), который вернет false (Смотрите красный раздел в документе).

0
По вопросам рекламы [email protected]