使用美元符号$ cashtag以及#标签#

时间:2014-07-30 23:12:05

标签: php regex hashtag

好的,我希望同时使用美元符号$(cashtag)和Hashtag#作为以下代码。以下代码是我尝试使用的代码......

这是原始代码:

// Hashtags and @Mentions
        $str = preg_replace_callback('~([#@])([^\s#@]+)~',
        create_function('$m', '$dir = $m[1] == "#" ? "search/?q=%23" : "./";' .
        'return "<a href=\"$dir$m[2]\">$m[0]</a>";' ),
        $str );
        /* Link text */
        $str = self :: linkText( $str );
        /* Emoticons */
        $str = self :: emoticons( $str );
        $str = stripslashes( $str );
        //$str = str_replace( '&lt;br /&gt;', '<br />', $str );

        //return wordwrap( $str, 60, "\r\n", TRUE );
        return $str;
    }

这是我的编辑版本

// Hashtags and @Mentions
        $str = preg_replace_callback('~([#@$])([^\s#@$]+)~',
        create_function('$m', '$dir = $m[1] == "#" ? "search/?q=%23,%24" : "./";' .
        'return "<a href=\"$dir$m[2]\">$m[0]</a>";' ),
        $str );
/* Link text */
        $str = self :: linkText( $str );
/* Emoticons */
        $str = self :: emoticons( $str );
        $str = stripslashes( $str );
        //$str = str_replace( '&lt;br /&gt;', '<br />', $str );

        //return wordwrap( $str, 60, "\r\n", TRUE );
        return $str;
    }

我添加了&#34; $&#34;和上面代码的%24 ......事情是&#34; 原始&#34;代码正常工作并生成如下URL:example.com/search/?q=#myhashtag

但是我编辑的代码会显示如下网址:example.com/myhashtag

如何同时拥有&#34;#&#34;和&#34; $&#34;功能与原始代码类似,并生成两个这样的URL:

example.com/search/?q=#myhashtag

example.com/search/?q=$mycashtag

1 个答案:

答案 0 :(得分:4)

正则表达式中未转义的$符号将锚定到输入字符串的末尾。要匹配文字$,你必须用反斜杠

来逃避它