如何用单引号(')替换撇号(')

jam*_*uro 6 php

似乎有两种类型的撇号。我想知道这个字符(')和这个(')之间的区别

第一个是从 Microsoft Word 复制的,我试图将其粘贴到文本区域中,然后插入到数据库中,但它不起作用。它打破了我的查询,所以我想用这个(')替换它,请我如何实现这一点。

我试过这个,但它似乎不起作用

function replace_microsolft_apostrophe($string){
        $string = str_replace('’', "'", $string);
        return $string;
    }
Run Code Online (Sandbox Code Playgroud)

我的查询如下所示:

function create_note($page_id,$title,$note,$category,$author_id){
    global $conn,$notes_table,$pages_table,$notification_table;
    $sql = "INSERT INTO $notes_table(page_id,title,content,note_category) VALUES(?,?,?,?)";
    $query = $conn->prepare($sql);
    $query->bind_param("issi",$page_id,$title,htmlspecialchars($note),$category);
    $query->execute();
}
Run Code Online (Sandbox Code Playgroud)

上面的查询没有这个字符就可以正常工作(')的

我也想知道为什么会这样?因为它与我按的键相同,但是当它转到 Microsoft Word 时,字符似乎发生了变化。我试图让它工作的原因是因为用户可能会在我的应用程序上从 Microsolf word 和过去复制已经键入的作品,我希望他们在那里编写、注释和发布它。

任何帮助都会很好。

jam*_*uro 6

哇!在网上冲浪后,我发现Pascal Martin 的回答非常有用……它还引用了一个包含完整答案的网站。 如何在 PHP 中替换 Microsoft 编码的引号

我能够用正常报价替换正确的引号

  //convert single-byte apostrophes -encoded
function convert_smart_quotes($string) 

{ 
    $search = array(chr(145), 
                    chr(146), 
                    chr(147), 
                    chr(148), 
                    chr(151)); 

    $replace = array("'", 
                     "'", 
                     '"', 
                     '"', 
                     '-'); 

    return str_replace($search, $replace, $string); 
} 
Run Code Online (Sandbox Code Playgroud)

这个答案也更有用: Converting Microsoft Word special characters with PHP