2011-11-21 40 views
5

Tôi có một chuỗi trong mã của tôi theo ví dụ sau:PHP chuỗi không cho phép < and > ký tự

<?php 
$find = '<tag'; 
$string = 'blah blah <tag=something>'; 
?> 

đơn giản đủ, nhưng khi tôi cố gắng echo chuỗi, nó không thích những < hoặc> nhân vật. Tất cả những gì của có được echo'ed là:

blah blah

Vì vậy, về cơ bản tôi đoán tôi cần phải thoát khỏi những nhân vật để có được chúng để làm việc trong PHP nhưng im không chắc chắn chính xác như thế nào. Tôi đang sử dụng này cho một hệ thống khuôn mẫu, vì vậy trong html nộp hồ sơ có thể được bao gồm bằng cách sử dụng:

<include="filename.html"> 

Vì vậy, tôi không cần phải hiển thị các < và> ký tự trên màn hình bất cứ lúc nào, Tôi chỉ cần đọc các tập tin, tìm các trường hợp của các thẻ và làm một số phép thuật. Tôi đã có tất cả các phần đó làm việc nhưng Nó chỉ là bất kỳ chuỗi có chứa nhiều hơn/ít hơn so với các nhà khai thác mà dường như không hoạt động OK.

Bất kỳ ý tưởng nào?

+0

Bạn đang xem nguồn của trang hay chỉ thấy kết quả trực quan mà trình duyệt đang hiển thị cho bạn? –

+0

< and > không bao giờ phải được hiển thị trên màn hình, nó chỉ được lưu trữ trong một biến chuỗi. – Amo

+0

bản sao có thể có của [In các biểu tượng nhỏ hơn và lớn hơn trong PHP] (http://stackoverflow.com/questions/6916023/print-less-than-and-greater-than-symbols-in-php) – mario

Trả lời

3

Bạn cần phải sử dụng các ký tự HTML để tránh ký tự bị biến thành HTML.

vậy:

echo htmlspecialchars("<hello>"); 
+4

Từ các tài liệu PHP mà bạn tham chiếu: * Trả về một chuỗi có dấu gạch chéo ngược trước các ký tự cần được trích dẫn trong truy vấn cơ sở dữ liệu v.v. * Phần nào trong số đó có liên quan đến điều này câu hỏi? –

+0

Rất tiếc! @David là đúng – tekknolagi

+0

chức năng này không có hiệu lực '<' dấu ngoặc ở tất cả .. Điều này có nghĩa là để thoát 'và' bên trong dây –

1

bạn có thể sử dụng htmlspecialchars chức năng để thoát khỏi < ngoặc ..

8

Với PHP bạn có thể tạo đánh dấu HTML, vì vậy bạn có để tìm cách phân biệt giữa các ký tự phần tử HTML (< &>). Có chuỗi ký tự đặc biệt trong HTML được gọi là HTML entities. Chúng được mô tả bằng dấu và, một số loại viết tắt và kết thúc bằng dấu chấm phẩy.

Dưới đây là một số ví dụ:

&gt;  : > (greater-than) 
&lt;  : < (less-than) 
&amp; : & (ampersand) 
&raquo; : » (right angle quote marks) 
&eacute; : é (e acute) 

Hầu như tất cả các nhân vật có thể được biểu diễn với các đơn vị như vậy, nhưng nó nhanh chóng trở nên tẻ nhạt. Bạn chỉ phải nhớ các số < và > cùng với & cho URL.

Mã của bạn nên được viết lại như thế này nếu ý định của bạn là hiển thị dấu nhỏ hơn/lớn hơn.

<?php 
$find = '&lt;tag'; 
$string = 'blah blah &lt;tag=something&gt;'; 
?> 

Như đã đề cập trong các câu trả lời khác, bạn có thể sử dụng hàm htmlspecialchars() để chuyển đổi ký tự trong biến (ví dụ: từ đầu vào của người dùng).

<?php echo htmlspecialchars($string); ?> 

sẽ hiển thị blah blah <tag=something> để xem trong trình duyệt web. Khác, nếu bạn đang sử dụng PHP trên dòng lệnh ví dụ, bạn sẽ không cần phải sử dụng chức năng này.

Các vấn đề liên quan