dougu4448 2015-02-26 10:24
浏览 54
已采纳

Laravel / PHP str_replace函数中的单引号显示笑脸图像

I checked already the many articles here about single quote handling in PHP, but I don't find the right answer which solves my issue: So here we go:

I have the following function to replace shortcuts to smileys (shortened version), This was working on my old version and old servers (Apache, MySQL), but on the new servers (nginx, Laravel, PHP, MySQL) it replaces all smiley shortcuts but the :'(

public static function addSmileys($text){

    return str_replace( 
        array(
            ":-)",
            ":'("
        ), 
        array(
           "<a title=':-)'><i class='smiley smile'></i></a>",
           "<a title=\":'(\"><i class='smiley crying'></i></a>"
        ),
     $text);
} 

I have old migrated data from the old system and it won't help if I only modify new input. There might be something with the Character set, but I really don't know

  • 写回答

1条回答 默认 最新

  • doulou0882 2015-02-27 09:23
    关注

    I tried to use ":\'(" which didnt work. ':\'(' works fine. And here is the correct function now:

    public static function addSmileys($text){
    
       return str_replace( 
          array(
               ":-)",
               ':\'(', // added slash and single quotes, slash double quotes not working
               ':&#39;(' // due to previous move, some crying smileys looked like this
           ), 
           array(
              "<a title=':-)'><i class='smiley smile'></i></a>",
              "<a title=\":'(\"><i class='smiley crying'></i></a>",
              "<a title=\":'(\"><i class='smiley crying'></i></a>"
            ),
         $text);
    } 
    

    Thanks @CD001 You were right, I just wrapped it in the wrong quotes.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?