2009-12-01 43 views
7

Có cách nào để làm cho php ngừng xử lý tệp và làm cho nó hoạt động với phần đã được phân tích cú pháp. Ý tôi là như sau:ngừng xử lý tệp php

<some data here> 
<?php phpinfo(); [IS THERE ANY THING I CAN PUT HERE] ?> 
<more data> 
[IS THERE ANY THING I CAN PUT HERE] 
<?HOW CAN I MAKE PHP NOT PARSE THIS?> 

là có anyway để làm cho dữ liệu bỏ qua php sau phần php đầu tiên không?

+1

Ok tôi sẽ cắn ... Tôi tò mò, tại sao bạn muốn? Bạn đang cố gắng để làm chính xác? – cletus

+0

Bạn có muốn xuất phần còn lại của tệp dưới dạng văn bản thô không? – SLaks

Trả lời

2

Bạn có thể sử dụng từ khóa exit để yêu cầu PHP hoàn tất xử lý tệp.

+0

Điều này có đảm bảo rằng nó thậm chí không phân tích cú pháp phần còn lại của tệp không? – SLaks

+0

Đúng ........ –

+0

Có ... từ khóa 'thoát' cụ thể yêu cầu PHP ngừng phân tích cú pháp, tuôn ra dữ liệu đầu ra đã có và trả về điều khiển quay lại điều đã gọi nó. – Amber

10

giải pháp khác có thể được sử dụng __halt_compiler:

dừng việc thực hiện các trình biên dịch. Điều này có thể hữu ích khi nhúng dữ liệu vào các mã PHP , như cài đặt tệp.

Byte vị trí bắt đầu dữ liệu có thể được xác định bởi __COMPILER_HALT_OFFSET__ liên tục được định nghĩa chỉ nếu có một __halt_compiler() thể hiện trong tập tin .

Cách sử dụng thông thường là dành cho Phar archives, khi bạn cần nhúng dữ liệu PHP và (có thể nhị phân) vào một tệp và mã PHP cần có quyền truy cập vào dữ liệu đó.


Và có thực sự là một sự khác biệt: mã này:

blah blah 
<?php phpinfo(); ?> 
glop glop 
<?php exit(); ?> 
<?HOW CAN I MAKE PHP NOT PARSE THIS?> 

Gets tôi một Parse error: syntax error, unexpected T_STRING
(Có lẽ vì tôi có short_open_tag kích hoạt, tôi giả sử)


Trong khi điều này một:

blah blah 
<?php phpinfo(); ?> 
glop glop 
<?php __halt_compiler(); ?> 
<?HOW CAN I MAKE PHP NOT PARSE THIS?> 

hoạt động OK - mã PHP không hợp lệ này sau khi gọi tới __halt_compiler().

+0

mẹo hay! Phần còn lại của tệp có được gửi tới trình duyệt (không bị cắt/cắt ở đó) không? Nếu vậy, điều này có thể tăng tốc xử lý các trang dài chỉ với ít mã PHP ngay từ đầu (__halt_compiler(); như dòng cuối cùng), hoặc các trang HTML thuần túy được bao gồm bởi PHP (thêm Làm dòng đầu tiên) . – FrancescoMM

4

Tôi tin rằng tất cả những gì bạn cần làm là viết return 0; (hoặc bất kỳ giá trị nào khác), PHP sẽ ngừng phân tích cú pháp tệp này và quay lại bất kỳ điều gì đã gọi nó. Điều này hữu ích khi bạn cần dừng thực thi trong một tệp nhưng không muốn hoàn toàn die() hoặc exit().

+0

Theo tôi hiểu nó không thực sự dừng * phân tích cú pháp * tệp nhưng nó dừng * thực thi * khi nó đạt đến 'trả về' –

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