Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式来查找和替换像twitter这样的@提及_Php_Regex_Preg Replace - Fatal编程技术网

Php 正则表达式来查找和替换像twitter这样的@提及

Php 正则表达式来查找和替换像twitter这样的@提及,php,regex,preg-replace,Php,Regex,Preg Replace,我正在开发一个PHP应用程序,它需要一个正则表达式来替换像twitter这样的@提及。此外,正则表达式还应满足以下需求 如果只有@且前后无任何内容,则不应更换 不应替换电子邮件中的@。例如,sam@example.com不应更换 只有像@sam或@example这样的字符串应该像和那样被替换 请帮忙。提前谢谢。像这样的东西怎么样- (?<!\w)@[\w]+ (?类似于- (?<!\w)@[\w]+ 哇,我自己找到了答案 $tweet = preg_replace('/(^|[^

我正在开发一个PHP应用程序,它需要一个正则表达式来替换像twitter这样的@提及。此外,正则表达式还应满足以下需求

  • 如果只有
    @
    且前后无任何内容,则不应更换
  • 不应替换电子邮件中的
    @
    。例如,
    sam@example.com
    不应更换
  • 只有像
    @sam
    @example
    这样的字符串应该像
    那样被替换

  • 请帮忙。提前谢谢。

    像这样的东西怎么样-

    (?<!\w)@[\w]+
    

    (?类似于-

    (?<!\w)@[\w]+
    

    哇,我自己找到了答案

    $tweet = preg_replace('/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '$1<a href="http://twitter.com/$2">@$2</a>', $tweet);
    
    $tweet=preg_replace('/(^[a-z0-9])@([a-z0-9+)/i','$1',$tweet);
    

    谢谢你们的帮助。

    哇,我自己找到了答案

    $tweet = preg_replace('/(^|[^a-z0-9_])@([a-z0-9_]+)/i', '$1<a href="http://twitter.com/$2">@$2</a>', $tweet);
    
    $tweet=preg_replace('/(^[a-z0-9])@([a-z0-9+)/i','$1',$tweet);
    

    感谢大家的帮助。

    由于twitter最多可以包含15个字符,您可以这样编写,以避免出现一些错误:

    $tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
    
    $tweet=preg_replace(“/(^\w)@(\w{1,15})/i“,“\\1@\\2”,$tweet);
    
    由于twitter最多可以包含15个字符,您可以这样编写,以避免出现一些错误:

    $tweet = preg_replace("/(^\w)@(\w{1,15})/i", "\\1<a ref=\"http://twitter.com/\\2\">@\\2</a>", $tweet);
    
    $tweet=preg_replace(“/(^\w)@(\w{1,15})/i“,“\\1@\\2”,$tweet);