Trong dự án php của tôi, tôi có một giá trị tương ứng với các bộ phận đặc biệt như "," vv ("5" inch, '3,5' inch, vv). Nhưng nó không xuất hiện trong trường văn bản. này là nó có thể hiển thị giá trị này trong một hộp văn bản có ai giúp tôi ...Trường nhập có chứa dấu nháy kép giá trị
Trả lời
Sử dụng htmlentities:?
<input value="<?php echo htmlentities($value);?>">
tôi cho rằng "text box" của bạn là một phần tử HTML <input>
Nếu có, bạn sẽ hiển thị nó bằng cách sử dụng một cái gì đó như này:
echo '<input name="..." value="' . $yourValue . '" />';
Nếu đó là trường hợp, bạn cần phải thoát khỏi HTML mà chứa trong biến của bạn, với htmlspecialchars
:
echo '<input name="..." value="' . htmlspecialchars($yourValue) . '" />';
Lưu ý rằng bạn có thể có thêm một vài thông số, đặc biệt là chỉ định mã hóa bạn đang sử dụng.
Bằng cách này, xem xét $yourValue
đã được khởi tạo như thế này:
$yourValue = '5 " inches';
Bạn sẽ nhận được từ này tạo ra HTML:
<input name="..." value="5 " inches" />
Để một mà, mà làm việc tốt hơn nhiều:
<input name="..." value="5 " inches" />
Vậy điều gì sẽ xảy ra khi bạn gửi trường nhập đó? Nó sẽ đi vào một cơ sở dữ liệu như " và sau đó bạn sẽ phải chuyển đổi nó ở một nơi khác? Điều gì sẽ xảy ra nếu bạn muốn gửi nó với dấu ngoặc kép thực tế trong đó. – mikato
+1 để có thêm mô tả, đề cập đến mã hóa và vì 'htmlspecialchars()' là đủ. – DanMan
Hãy thử điều này
echo '<input name="..." value="' . htmlspecialchars(stripslashes($yourValue)) . '" />';
hoặc
<input name="..." value="<?php echo htmlspecialchars(stripslashes($value)); ?>">
Chúc may mắn;)
Khi sử dụng charset UTF-8, tôi sử dụng mã dưới đây để có được Iñtërnâtiônàlizætiøn VÀ đôi (hoặc đơn) trích dẫn phải:
<input type="text" name="title" value="<?php echo htmlentities(stripslashes(utf8_decode($title))); ?>" />
ps: điều này rất hữu ích sau khi ai đó gửi biểu mẫu, nhưng khi đầu vào không được xác thực.
Tôi thích sử dụng 'stripcslashes()' để duy trì các dòng thay đổi. – Raptor
Đây là một chút cũ nhưng tôi tìm thấy nó vì vậy tôi nghĩ rằng tôi sẽ đóng góp những gì tôi đã học được.
Tôi đã tìm thấy nếu bạn có dấu ngoặc kép trong một biến trong javascript (từ AJAX/cơ sở dữ liệu gì) và bạn muốn đặt nó trong một trường - nếu bạn xây dựng toàn bộ trường/biểu mẫu html và sau đó hoán đổi thành div sử dụng innerHTML, dấu ngoặc kép trong giá trị sẽ gây ra vấn đề. Tôi đã làm điều này và tôi không thể tìm ra cách nào đó bằng cách trốn thoát.
Bạn nên tạo html với trường và hoán đổi nó trước tiên, sau đó thực hiện một document.getElementById ('myfieldid'). Value = thevalue; thay vào đó và nó hoạt động tốt.
Đối với một giải pháp Javascript này làm việc và đã cho tôi ra khỏi một mứt. Không ai đề cập đến chủ đề này cần phải có trong PHP. Vì vậy, tôi lấy đi -1 của bạn. :) Cảm ơn bạn đã tìm ra điều này. Nếu không nó sẽ đưa tôi cả đêm để sửa chữa một lỗi. – Paul
Cảm ơn :) Đó là một vấn đề kỳ lạ và tôi không thể tin rằng việc trốn thoát không hiệu quả. Thật tốt khi biết điều đó đã giúp ích và tôi không phải là người duy nhất có nỗi đau này. – mikato
Personnaly tôi sử dụng thủ thuật này:
$s = str_replace("& amp ;", "&", (htmlentities(stripslashes($s), ENT_QUOTES, 'UTF-8')));
tôi cần phải áp dụng htmlspecialcars()
để truy vấn mảng kết quả.Tôi tìm thấy a useful solution from here (xem bình luận của 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');
Nó làm một công việc khá chút không cần thiết nếu bạn lấy chỉ một vài cột văn bản nhưng ít nhất bạn không cần phải viết htmlspecialchars()
chức năng mẫu HTML nhiều lần.
Đối với UTF-8, tôi đã truy cập htmlspecialchars($value, ENT_QUOTES, "UTF-8")
đã thực hiện thủ thuật.
- 1. Làm cách nào để chèn giá trị chứa dấu nháy đơn (dấu nháy đơn)?
- 2. JSON giá trị với dấu nháy đơn
- 3. Xóa dấu nháy kép khỏi chuỗi
- 4. đúng thoát khỏi một dấu nháy kép trong CSV
- 5. chắp thêm các giá trị với cả dấu nháy đơn và dấu ngoặc kép vào hộp văn bản
- 6. Có thể đánh giá các hằng số bên trong dấu nháy kép không?
- 7. Thay nháy kép với một giá duy nhất
- 8. chèn giá trị chuỗi với dấu nháy đơn
- 9. Parse CSV với dấu nháy kép trong một số trường hợp
- 10. Ruby chuyển đổi dấu nháy đơn thành dấu ngoặc kép trong XML
- 11. php để trích xuất một chuỗi từ dấu nháy kép
- 12. XSLT + Thay thế dấu nháy kép bằng chuỗi thoát
- 13. Dấu ngoặc kép trong các giá trị thuộc tính HTML?
- 14. Làm thế nào để thoát khỏi dấu nháy đơn vào dấu ngoặc kép vào dấu nháy đơn
- 15. Đặt giá trị của trường nhập
- 16. Báo giá thoát và dấu ngoặc kép
- 17. Làm thế nào để đưa dữ liệu có chứa dấu ngoặc kép trong biến chuỗi?
- 18. Có thể chấp nhận sử dụng dấu nháy đơn xung quanh các giá trị trong thuộc tính HTML không?
- 19. Tại sao các giá trị được sao chép từ lưới được trả lại được đánh dấu bằng dấu ngoặc kép?
- 20. Thay thế tất cả các dấu ngoặc kép bằng dấu nháy đơn
- 21. Sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép trong Perl là gì?
- 22. Sự khác nhau giữa dấu nháy đơn và dấu ngoặc kép trong Perl là gì?
- 23. Sự khác biệt giữa dấu nháy đơn và dấu ngoặc kép trong Javascript
- 24. Dấu nháy đơn hoặc dấu ngoặc kép cho phép nối biến đổi?
- 25. Có sự khác biệt nào giữa các dấu nháy đơn và kép trong Java không?
- 26. jQuery: Cách thoát khỏi dấu nháy đơn và kép bằng dấu gạch chéo ngược
- 27. Java MessageFormat - Làm thế nào tôi có thể chèn các giá trị giữa các dấu nháy đơn?
- 28. Vấn đề với giá trị kép ràng buộc
- 29. Tên trường nhập biểu mẫu chứa dấu ngoặc vuông như trường [index]
- 30. Sự khác nhau giữa dấu nháy đơn và dấu ngoặc kép trong SQL là gì?
Nếu bạn muốn lưu các giá trị này không được mã hóa trong cơ sở dữ liệu thì sao? Bạn phải áp dụng mỗi lần 'html_entity_decode();' trước khi thực hiện SQL INSERT? Điều đó nghe không tốt lắm – dynamic
yes123, không, bạn không biết. Mã hóa này sẽ đảm bảo các giá trị là chính xác trong tài liệu HTML. Trình duyệt web sẽ tự động gửi nó theo đúng định dạng bình thường. –
Bạn đã đúng! Tôi đã bỏ lỡ rằng – dynamic