2010-01-05 25 views
18

在我的php項目中,我有一個包含特殊charectors的值,比如「,」等(「5」英寸,「3.5」英寸等等),但它沒有出現在文本字段中。這 是可以顯示在文本框中該值是否有任何人幫我...包含雙引號值的輸入字段

回答

72

使用htmlentities:??

<input value="<?php echo htmlentities($value);?>"> 
+3

如果要保存未在數據庫中引用的值,該怎麼辦?在執行SQL INSERT之前,您必須每次應用'html_entity_decode();'這聽起來不錯 – dynamic 2012-11-27 20:27:43

+4

yes123,不,你不知道。此編碼將確保HTML文檔中的值是正確的。網頁瀏覽器會自動以正確的格式發送它。 – 2012-11-28 07:13:15

+0

你是對的!我錯過了 – dynamic 2012-11-28 10:11:14

10

我想你的「文本框」是一個HTML元素<input>

如果是這樣,你使用類似的東西顯示它這樣的:

echo '<input name="..." value="' . $yourValue . '" />'; 

如果是這種情況,就需要轉義中都包含的您的變量的HTML,與htmlspecialchars

echo '<input name="..." value="' . htmlspecialchars($yourValue) . '" />'; 

請注意,您可能需要添加幾個參數,特別是指定您正在使用的編碼。


這樣,考慮$yourValue已初始化是這樣的:

$yourValue = '5 " inches'; 

你會從這個得到生成的HTML:

<input name="..." value="5 " inches" /> 

那一個,它的效果要好得多:

<input name="..." value="5 &quot; inches" /> 
+2

那麼當你提交輸入字段時會發生什麼?它會進入像"這樣的數據庫,然後你必須將它轉換到其他地方?如果你想用它的實際雙引號提交它會怎麼樣。 – mikato 2012-03-14 14:59:59

+0

+1更具描述性,提及編碼,因爲'htmlspecialchars()'就足夠了。 – DanMan 2013-12-02 14:26:57

0

試試這個

echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />'; 

<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>"> 

祝你好運;)

5

使用的字符集UTF-8,我用下面的代碼來獲得Iñtërnâtiônàlizætiøn和雙(或單)引述權:

<input type="text" name="title" value="<?php echo htmlentities(stripslashes(utf8_decode($title))); ?>" /> 

ps:這在有人提交表單後有用,但輸入未驗證時有用。

+0

我更喜歡使用'stripcslashes()'來保存更改行。 – Raptor 2013-07-16 03:52:06

0

這有點舊,但我找到了,所以我想我會貢獻我所學到的。

我發現如果你有一個JavaScript中的變量(從AJAX /數據庫無論)雙引號,你想把它放在一個字段 - 如果你建立整個領域/形式的HTML,然後交換成一個div使用innerHTML,則值中的雙引號會導致問題。我正在這樣做,我無法通過逃避任何方式繞過它。

您應該使用字段構建html並交換它,然後執行document.getElementById('myfieldid')。value = thevalue;相反,它工作正常。

+1

對於Javascript解決方案,這工作,並讓我走出了一個堵塞。沒有人提到這個線程需要在PHP中。所以我拿走你的-1。 :)謝謝你解決這個問題。否則,它會花費我整晚修復一個錯誤。 – Paul 2016-09-09 03:00:23

+0

謝謝:)這是一個奇怪的問題,我不能相信逃跑沒有奏效。很高興知道它有幫助,而且我不是唯一一個有這種痛苦的問題。 – mikato 2016-09-14 15:44:43

0

Personnaly我用這一招:

$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8'))); 
0

我需要申請htmlspecialcars()查詢結果數組。我發現a useful solution from here(請參閱sean的評論)。

//create a cleaning function 
function _clean(&$value) { 
    $value = htmlspecialchars($value); 
    //$value = htmlspecialchars($value, ENT_QUOTES);//alternative 
} 

//fetch the data from DB somehow (sqlQ is a custom function) 
$q = "..."; 
$r = $d->sqlQ($q); 
$row = mysqli_fetch_array($r,MYSQLI_ASSOC); 

//...call the function recursively (not always necessary) to the resultset row 
array_walk_recursive($row, '_clean'); 

它做了不少不必要的工作,如果你只取幾個文本列,但至少你不需要的功能htmlspecialchars()寫入HTML表單多次。

6

對於UTF-8我去htmlspecialchars($value, ENT_QUOTES, "UTF-8")其中的伎倆。

stack source

相關問題