我现在正在浏览网页和stackoverflow很长一段时间,我似乎找不到正确的答案。我在生成网址时遇到以下问题。我正在将一个项目移到Laravel,一切都应该和以前一样。
基本上问题是,当我使用我的表单添加一个新事件并使用Input::get('name')
或$_REQUEST['name']
捕获输入时,我似乎无法像之前那样捕获字符。
在旧项目中,我抓住了角色,并将它们转换为html实体,如ü
,然后在我的网址中,它是ü
到ue
。我甚至导入了我使用的相同功能,但它们不起作用。这是来自旧项目的输入控制功能,也阻止了SQL注入:
function checkinput($rawstring,$replacespace=0){
$newstring=str_replace(array("'",chr(34),"â","å","Å","ä","Ä","æ","Æ","è","É","é","ë","ĕ","Ö","ö","ó","ø","Ø","Ü",
"ü","ň","ñ","ß","č"),
array("'",""","â","å","Å","ä","Ä","æ","Æ","è",
"É","é","ë","ĕ","Ö","ö","ó","ø","Ø","Ü",
"ü","ň","ñ","ß","č" ),$rawstring);
if($replacespace==1){
$newstring=str_replace(" ", "_", $newstring);
}
return $newstring;
}
你能帮我再做一次吗?我看到应该在Laravel配置中的某个位置设置no-entities
选项,但我找不到在哪里这样做。提前谢谢!
答案 0 :(得分:0)
也许你可以改变你的charset页面
<form method="post" action="/your/url/" accept-charset="UTF-8"></form>
或使用/和
$string = mb_convert_encoding($_POST["Name"], "ISO-8859-1", "UTF-8");
答案 1 :(得分:0)
为了完成这篇文章,我终于找到了我的问题的答案。实际上并不那么难,如果你知道你在寻找什么: - )
我用htmlentities()php函数解决了它,有一些参数,见下文:
$eventName = htmlentities(($_POST['name']), ENT_QUOTES, "UTF-8");
有了这个,我得到了我的实体,而不是我想要的方式,但至少我得到了它们。
例如,我的ü
已转换为ü
而不是十六进制值ü
。我调整了函数,它将字符转换回ue
以获取URL,现在一切正常。
感谢您的努力!