将regex字符串转换为URL

时间:2015-06-17 10:35:56

标签: regex

我试图将单词转换为URL。单词用逗号,分隔。但我的问题是第一个词没有被考虑在内,因为它没有逗号。

public static function convertHashtags($str){
        $regex = "/,+([a-zA-Z0-9_]+)/";
        $str = preg_replace($regex, '<a href="'.Config::get('URL').'index/hashtag/$1">$0</a>', htmlentities($str));
        return($str);
    }

例如$str=june,mars,april结果只有marsapril得到网址,而不是june

1 个答案:

答案 0 :(得分:1)

您可以将正则表达式更改为:

public void process(final Exchange exchange) {
try {
    MimeMessage mimeMessage;

    final Object body = exchange.getIn().getBody();
    if (body instanceof MimeMessage) {
        // Body is directly a MimeMessage
        mimeMessage = (MimeMessage) body;
    } else {
        // Create a message with exchange data
        mimeMessage = new MimeMessage(sender.getSession());
        getEndpoint().getBinding().populateMailMessage(getEndpoint(), mimeMessage, exchange);
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("Sending MimeMessage: {}", MailUtils.dumpMessage(mimeMessage));
    }
    sender.send(mimeMessage);
    // set the message ID for further processing
    exchange.getIn().setHeader(MailConstants.MAIL_MESSAGE_ID, mimeMessage.getMessageID());
} catch (MessagingException e) {
    exchange.setException(e);
} catch (IOException e) {
    exchange.setException(e);
}
}

在你的单词之前匹配行开头或逗号。

您可以将正则表达式缩短为:

$regex = '/(?<=,|^)([a-zA-Z0-9_]+)/';
相关问题