0

When I copy a domain name from Google Maps and then paste it into a form I built, it enters it into a MySQL database with ‎ appended at the end of the domain name.

Any idea how I could strip that ‎ off of the domain name?

The relevant code is below

<div class="friend5title"><label for="url">Website:</label></div> 
    <div class="friend5field"><input name="website" type="text" id="website" maxlength="150"></div>



$website = mysql_real_escape_string($website);

mysql_query("INSERT INTO submission VALUES ('$website')");
4

2 回答 2

1

它是一个控制字符(http://en.wikipedia.org/wiki/Left-to-right_mark)。

忽略我之前所有的答案,我刚刚意识到(因为我写得很快)它不是 unicode 它实际上是 HTML 实体格式,所以你需要去掉那个 HTML 实体:

preg_replace('/(&#8206;)/', '', $string);

另一种方法是实际净化您的字符串并将其从所有 HTML 实体中清除,因为它实际上不应该包含任何内容。通常可能会有特殊字符,&amp;但这些不应该存在于从我认为的输入字段中获取的 URL 中。

这是一个关于删除 HTML 实体的问题,答案很明确:如何删除 html 特殊字符?

至于它发生的原因:可能有人有一个外国浏览器,它人为地使输入中的文本以某种方式进行,但反过来又添加了这个 html 实体。

于 2012-08-17T23:02:49.507 回答
0

在输入字段中粘贴时,您确实复制了一个从左到右的字符,其 unicode 编号为 8206。由于浏览器显然确实有一个不在某些 unicode 字符集(如 UTF-8)中的表单,因此它将该字符发送到服务器作为数字实体&#8206;。服务器必须对这些进行解码,或者必须更改表单(和页面)以接受 UTF-8。

就您的 LTR 角色而言,这似乎是多余的。您可以添加一个onchange=...以删除 URL 的字符 < 0 和 > 127。他们仍然是角色,所以很容易做到。

于 2012-08-17T23:45:48.567 回答