I have a code where I match comma-separated words to text using the str_ireplace()
function:
JavaScript
x
$words = "word1, word2, word3";
$text = "This is word1 text word2";
if (str_ireplace(explode(', ', $words), '', $text) != $text) {
/*any logic*/
}
Please tell me how can I do the reverse logic? Those. if nothing is found or matched.
else {}
does not work.
Full code:
JavaScript
function get_matched_categories( $description_every ) {
$correspondence_tables = get_field( 'correspondence_table', 'option' );
$default_categories = get_field( 'default_categories', 'option' );
if ( is_array( $correspondence_tables ) ) {
$arr_cat = array();
foreach ( $correspondence_tables as $child_correspondence ) {
if ( str_ireplace( explode( ', ', $child_correspondence['keywords'] ), '', $description_every ) != $description_every ) {
array_push( $arr_cat, get_cat_ID( $child_correspondence['category'] ) );
} else {
if ( is_array( $default_categories ) ) {
foreach ( $default_categories as $default_category ) {
array_push( $arr_cat, get_cat_ID( $default_category['default_category_name'] ) );
}
}
}
}
return $arr_cat;
}
}
Advertisement
Answer
The problem is that you’re adding the default categories whenever you don’t match the keywords in one element of $correspondence_tables
, but it could match later elements.
The code to add the default categories should only be added if none of the keywords in $correspondence_tables
are matched. You can tell if that happened at the end of the loop by checking if $arr_cat
is empty.
JavaScript
function get_matched_categories( $description_every ) {
$correspondence_tables = get_field( 'correspondence_table', 'option' );
$default_categories = get_field( 'default_categories', 'option' );
if ( is_array( $correspondence_tables ) ) {
$arr_cat = array();
foreach ( $correspondence_tables as $child_correspondence ) {
if ( str_ireplace( explode( ', ', $child_correspondence['keywords'] ), '', $description_every ) != $description_every ) {
array_push( $arr_cat, get_cat_ID( $child_correspondence['category'] ) );
}
}
if (empty($arr_cat) && is_array($default_categories)) {
foreach ( $default_categories as $default_category ) {
array_push( $arr_cat, get_cat_ID( $default_category['default_category_name'] ) );
}
}
return $arr_cat;
}
}