2011-02-22 37 views
5

Được rồi, vì vậy maybr Tôi sẽ làm điều này hoàn toàn sai, tôi có thể là. Nhưng tôi muốn có thể lấy HTML giữa một ... giống như vậy:Chụp HTML thành một chuỗi trong PHP

$str = ?> 
... some HTML goes here ... 
<?php ; 

Tôi hoàn toàn tắt rocker để nghĩ rằng tôi có thể làm điều này? Tôi không thể nghĩ ra cách để đưa nó vào các từ để tôi có thể tìm kiếm nó trên Google, đó là lý do tại sao tôi ở đây ...

Trả lời

8

Bạn có thể sử dụng output buffering:

ob_start(); 
?> 
... some HTML goes here ... 
<?php 
echo 'php outputs are captured too'; 
$str = ob_get_contents(); 
ob_end_clean(); 

Ngoài ra, nếu nó chỉ là một chút về HTML (và không có mã php trong), chỉ cần viết nó xuống với một trong những string formats như heredoc hoặc nowdoc:

$str = <<<'NOWDOC' 
... some HTML goes here 
NOWDOC; 
+0

Hoạt động đẹp mắt! Tôi đang làm việc với một khung công tác MVC (symfony) và cố gắng giữ nguyên các quy tắc và điều này làm cho mọi thứ trở nên dễ dàng hơn. AND Komodo sẽ định dạng HTML theo cách này! Cảm ơn!! –

6

Nhìn vào heredocsnowdocs. Một heredoc trông giống như:

$str = <<<HTML 
    <div>This is some text!</div> 
HTML; 

// We're back in PHP. 
echo $str; 

Nếu bạn đặc biệt muốn làm việc với HTML, hãy xem XHP.

+0

Cảm ơn câu trả lời của bạn! Tôi chưa bao giờ nghe nói về XHP, nó có vẻ thực sự thú vị và hữu ích. Tôi nghĩ rằng tôi sẽ cài đặt và chơi xung quanh với nó.^_^Thật tuyệt vời khi Facebook mở cửa cho cộng đồng PMNM. Tôi đã sử dụng Cassandra và Tornado, bản thân mình. –

0

PHP có chuỗi ký tự được phân cách đặc biệt, nhiều dòng cho các tình huống như vậy.

This talks about it a little.

+0

Cảm ơn câu trả lời của bạn! Tôi đã cố gắng heredoc, nhưng nó không giống như PHP ngồi trong nó vì một lý do nào đó. Nó nhận ra nó một cách chính xác bởi vì nó đã ném ngoại lệ được đặt trong lớp __get() khi một phương thức không được tìm thấy. –

0

Chỉ muốn thêm vào câu trả lời của phihag.

Có thể chụp HTML với một chức năng là tốt, kể cả với các chức năng ẩn danh:

<?php $bob = function() { ?> 
... some HTML here... 
<?php }; ?> 

và sau đó sản lượng $ bob:

<?php $bob(); ?> 

hoặc bắt đầu ra của $ bob ở một nơi khác với bộ đệm đầu ra:

ob_start(); 
$bob(); 
$str = ob_get_contents(); 
ob_end_clean(); 
Các vấn đề liên quan