Я пытаюсь заменить текст внутри строки, но если я вставлю запятую в тексте, не работает.
Пример:
У меня есть следующая строка в переменной $ postinfo_meta: Android, iOS, Блог, Apple
Я хочу удалить блог, поэтому результат будет Android, iOS, Apple
Я пытаюсь сделать это с помощью:
$postinfo_meta = str_replace("Blog, ", "", $postinfo_meta);
Но это не работает. Если я поставлю
$postinfo_meta = str_replace("Blog", "", $postinfo_meta);
без запятой это работает, но результат Android, iOS, Apple
Любая идея?
Вот полный код функции с исправлением @Goleztrol (все еще не работает):
global $themename;
$postinfo_meta = '';
if ( in_array( 'author', $postinfo ) ){
$postinfo_meta .= ' ' . esc_html__('por',$themename) . ' ' . et_get_the_author_posts_link();
}
if ( in_array( 'date', $postinfo ) )
$postinfo_meta .= ' ' . esc_html__('en',$themename) . ' ' . get_the_time( $date_format );
if ( in_array( 'categories', $postinfo ) )
$postinfo_meta .= ' ' . esc_html__('en',$themename) . ' ' . get_the_category_list(', ');
if ( in_array( 'comments', $postinfo ) )
$postinfo_meta .= ' | ' . et_get_comments_popup_link( $comment_zero, $comment_one, $comment_more );
if ( '' != $postinfo_meta ) $postinfo_meta = __('Publicado',$themename) . ' ' . $postinfo_meta;
$items = array_map('trim', explode(',', $postinfo_meta));
// Filter Blog from the array. A callback function like this is very flexible,
// and you can even 'use' variables from the outer scope.
$items = array_filter($items, function($item){return $item != 'Blog';});
print("<pre>".print_r($items,true)."</pre>");
// Concat the items back together. Add the space again, if you like that.
$postinfo_meta = implode($items, ', ');
echo $postinfo_meta;
Простите, но когда я попробую следующее:
$postinfo_meta = "Android, iOS, Blog, Apple";
$postinfo_meta = str_replace("Blog, ", "", $postinfo_meta);
echo $postinfo_meta;
Работает нормально, вывод «Android, iOS, Apple» не то, что вам нужно?
Других решений пока нет …