我正在尝试在处理文本时将所有类型的智能引号转换为常规引号.但是,我编译的以下功能似乎仍然缺乏支持和正确的设计.
有谁知道如何正确地转换所有引用字符?
function convert_smart_quotes($string)
{
$quotes = array(
"\xC2\xAB" => '"', // « (U+00AB) in UTF-8
"\xC2\xBB" => '"', // » (U+00BB) in UTF-8
"\xE2\x80\x98" => "'", // ‘ (U+2018) in UTF-8
"\xE2\x80\x99" => "'", // ’ (U+2019) in UTF-8
"\xE2\x80\x9A" => "'", // ‚ (U+201A) in UTF-8
"\xE2\x80\x9B" => "'", // ? (U+201B) in UTF-8
"\xE2\x80\x9C" => '"', // “ (U+201C) in UTF-8
"\xE2\x80\x9D" => '"', // ” (U+201D) in UTF-8
"\xE2\x80\x9E" => '"', // „ (U+201E) …Run Code Online (Sandbox Code Playgroud) 我正在用PHP创建一个小留言板,我需要"简化"主题标题,以便在主题的网址中显示它.
例子:
Ceci est un sujet d'exemple 变 ceci-est-un-sujet-d-exemple
J'ai été à la plage 变 j-ai-ete-a-la-plage
I dislike sp&cial character$成为i-dislike-spcial-character(如果有更好的翻译,我会接受)
编辑1:所有字符串必须是UTF-8编码
编辑2:我最近了解到这种操作的结果被称为"slug"或"友好网址"
似乎有两种类型的撇号。我想知道这个字符(')和这个(')之间的区别
第一个是从 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 和过去复制已经键入的作品,我希望他们在那里编写、注释和发布它。
任何帮助都会很好。