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)。

私が今気付いた以前の答えをすべて無視してください(私はすぐに書いたので)それはユニコードではなく、実際には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 に答える