删除GET_POST_META中的最后一个字符

时间:2013-10-21 作者:Dustin J

我有一个自定义字段,其中包含一个句子以及末尾的标点符号。我希望将此字段用作我主页上文章的标题,但这样做时,我希望删除该自定义字段的最后一个字符(以便标题中不包括句子的结束语)。

Here is the code I use to display the custom field on my homepage:

<?php echo get_post_meta($post->ID, one_line_summary, true); ?>
我不擅长PHP编程,因此最好使用我的代码的具体示例。提前感谢!

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这更像是一个PHP问题,而不是一个WordPress问题。

如果要删除punctuation marks 喜欢(.,-;:) 您可以尝试此递归版本:

$s = get_post_meta( $post->ID, \'one_line_summary\', TRUE );

if( function_exists( \'remove_punctuation_marks\' ) )
    $s = remove_punctuation_marks( $s );
使用

/**
 * Remove punctuation marks (.,-;:) if they\'re the last characters in the string
 * WPSE: 119519
 *
 * @param string $s
 * @return string $s
 */
function remove_punctuation_marks( $s )
{
    $remove = array( \'.\', \',\', \'-\', \';\', \':\' );          // Edit this to your needs 
    if( in_array( mb_substr( $s, -1 ), $remove, TRUE ) )
        $s = remove_punctuation_marks( mb_substr( $s, 0, -1 ) ); 

    return $s;    
}
您可以在其中定义$remove 满足您的需要和mb_substr() 是的多字节版本substr().

示例:

以下测试:

echo  remove_punctuation_marks( \'...Hello world...:,;\' );
给出输出:

...Hello world
更新:最好使用rtrim() 正如@toscho所指出的;-)

那么在您的情况下:

$s = get_post_meta( $post->ID, \'one_line_summary\', TRUE ); 
$s = rtrim( $s, \'.,;:\' );
可以添加到列表中的位置(.,;:) 要删除的标点符号。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在