好的,我希望同时使用美元符号$(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( '<br />', '<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( '<br />', '<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
答案 0 :(得分:4)
正则表达式中未转义的$符号将锚定到输入字符串的末尾。要匹配文字$,你必须用反斜杠
来逃避它