我使用一个非常基本的html表单和提交按钮,它调用我的PHP来处理输入。问题是我的PHP无法识别“当我尝试str_replace时的标记。这是我的PHP :(注意 - html文本字段输入是从谷歌文档中粘贴的)
<?php
$article = $_POST['article'];
//This contains: “This has quotes” from my html input field
echo str_replace("”", "quote", $article);
//Returns the input, without quote replacement
echo addslashes($article);
//Does not add slashes
$quotes = "“This has quotes”";
echo str_replace("“", "quote", $quotes);
//Returns quoteThis has quotesquote as it should
?>
那么,HTML输入会导致输入引号无法识别,有没有办法解决这个问题?谢谢!
答案 0 :(得分:1)
我可以看到immediatley你在游戏中有很多不同的引用。首先是垂直单引号和双引号&#34;和&#39;,以及它们的左右版本。
对于此代码,您必须密切关注封装字符。所以....
<?php
$article = $_POST['article']; //This contains: “This has quotes” from my html input field
$article = str_replace('”', 'quote1', $article); // remove double left quote
$article = str_replace('"', 'quote2', $article); // remove double vertical quote
$article = str_replace("'", 'quote3', $article); // remove single vertical quote
echo addslashes($article); //Does not add slashes
$quotes = "“This has quotes”";
echo str_replace("“", "quote", $quotes); //Returns quoteThis has quotesquote as it should
?>
你会注意到在上面的例子中,只管理了6个基本引号中的3个,如果你想要替换它们,你需要添加一些新行,如下所示。
<?php
// REPLACE USING CHARACTER STRING
$article = str_replace('"', 'double vertical', $article); // replace double vertical
$article = str_replace("'", 'single vertical', $article); // replace single vertical
$article = str_replace('‘', 'single left', $article); // replace single left
$article = str_replace('’', 'single right', $article); // replace single right
$article = str_replace('“', 'double left', $article); // replace double left
$article = str_replace('”', 'double right', $article); // replace double right
// REPLACE USING CHARACTER STRING
// REPLACE USING CHATACTER CODE
$article = str_replace(chr(34), 'double vertical', $article); // replace double vertical
$article = str_replace(chr(39), 'single vertical', $article); // replace single vertical
$article = str_replace(chr(145), 'single left', $article); // replace single left
$article = str_replace(chr(146), 'single right', $article); // replace single right
$article = str_replace(chr(147), 'double left', $article); // replace double left
$article = str_replace(chr(148), 'double right', $article); // replace double right
// REPLACE USING CHATACTER CODE
?>
此处的上述示例显示了执行这些替换的两种方法,一种使用字符串,另一种使用聊天号码。在这种情况下都会这样做,但字符代码通常更容易查看。