0

我使用私人消息脚本,它会Re:在每次回复时向消息主题添加一个。不幸的是,如果对同一条消息有多个回复,它会添加另一个Re:,所以当几个 PM 被交换时,它看起来像这样:

Re: Re: Re: Re: Re: Re: Re: Re: Hello World!

以下是执行此操作的脚本的相关部分:

                    | <a class="reply"
                    href="<?php echo wp_nonce_url( "?page=rwpm_send&recipient=$msg->sender&id=$msg->id&subject=Re: " . stripcslashes( $msg->subject ), 'rwpm-reply_inbox_msg_' . $msg->id ); ?>"><?php _e( 'Reply', 'pm4wp' ); ?></a>

所以我想调整脚本,以便它只在有回复时添加一个。 Re:我怎么做?我猜可能是一个 IF 语句检查是否已经Re:存在...

4

2 回答 2

2

一个简单的正则表达式怎么样?

$replysubject = preg_replace('/^(Re: )*/', 'Re: ', stripcslashes( $subject ));

这将输出一个开头只有一个 'Re: ' 的字符串,无论输入字符串中有多少个。

在你的情况下:

href="<?php echo wp_nonce_url( "?page=rwpm_send&recipient=$msg->sender&id=$msg->id&subject=" . $replysubject, 'rwpm-reply_inbox_msg_' . $msg->id ); ?>"

于 2013-01-14T12:50:01.297 回答
2

因此,只有在没有时才添加“Re:”:

| <a class="reply" href="<?php echo wp_nonce_url( "?page=rwpm_send&recipient=$msg->sender&id=$msg->id&subject=".(strpos($msg->subject, "Re:") === false ? "Re: " : ""). stripcslashes( $msg->subject ), 'rwpm-reply_inbox_msg_' . $msg->id ); ?>"><?php _e( 'Reply', 'pm4wp' ); ?></a>

而且,当它只应该停留在开头时:

   | <a class="reply" href="<?php echo wp_nonce_url( "?page=rwpm_send&recipient=$msg->sender&id=$msg->id&subject=".(substr($msg->subject, 0, 3) != "Re:" ? "Re: " : ""). stripcslashes( $msg->subject ), 'rwpm-reply_inbox_msg_' . $msg->id ); ?>"><?php _e( 'Reply', 'pm4wp' ); ?></a>
于 2013-01-14T12:50:47.273 回答