Hướng dẫn parse error: syntax error, unexpected token php - lỗi phân tích cú pháp: lỗi cú pháp, mã thông báo php không mong muốn

Các lỗi cú pháp là gì?

PHP thuộc về các ngôn ngữ lập trình kiểu C và bắt buộc. Nó có các quy tắc ngữ pháp cứng nhắc, mà nó không thể phục hồi khi gặp phải các ký hiệu hoặc định danh bị đặt sai vị trí. Nó không thể đoán được ý định mã hóa của bạn.

Hướng dẫn parse error: syntax error, unexpected token php - lỗi phân tích cú pháp: lỗi cú pháp, mã thông báo php không mong muốn

Mẹo quan trọng nhất

Có một vài biện pháp phòng ngừa cơ bản mà bạn luôn có thể thực hiện:

  • Sử dụng thụt mã thích hợp, hoặc áp dụng bất kỳ phong cách mã hóa cao cả. Khả năng đọc ngăn chặn sự bất thường.code indentation, or adopt any lofty coding style. Readability prevents irregularities.

  • Sử dụng IDE hoặc Trình chỉnh sửa cho PHP có cú pháp làm nổi bật. Cũng giúp với dấu ngoặc đơn/cân bằng khung.IDE or editor for PHP with syntax highlighting. Which also help with parentheses/bracket balancing.

    Hướng dẫn parse error: syntax error, unexpected token php - lỗi phân tích cú pháp: lỗi cú pháp, mã thông báo php không mong muốn

  • Đọc tài liệu tham khảo ngôn ngữ và các ví dụ trong hướng dẫn. Hai lần, để trở nên thành thạo.

Cách diễn giải lỗi trình phân tích cú pháp

Một thông báo lỗi cú pháp điển hình có nội dung:

Lỗi Parse: Lỗi cú pháp, T_String không mong muốn, mong đợi ';' trong File.php trên dòng 217T_STRING, expecting ';' in file.php on line 217

Trong đó liệt kê vị trí có thể của một lỗi cú pháp. Xem tên tệp và số dòng được đề cập.file name and line number.

Một biệt danh như T_STRING giải thích biểu tượng nào mà trình phân tích cú pháp/tokenizer cuối cùng không thể xử lý. Đây không nhất thiết là nguyên nhân của sai lầm cú pháp, tuy nhiên.

Điều quan trọng là phải xem xét các dòng mã trước đó là tốt. Thường thì lỗi cú pháp chỉ là những rủi ro xảy ra trước đó. Số dòng lỗi chỉ là nơi trình phân tích cú pháp kết luận đã từ bỏ để xử lý tất cả.previous code lines as well. Often syntax errors are just mishaps that happened earlier. The error line number is just where the parser conclusively gave up to process it all.

Giải quyết lỗi cú pháp

Có nhiều cách tiếp cận để thu hẹp và sửa chữa các trục thuyết cú pháp.

  • Mở tệp nguồn được đề cập. Nhìn vào dòng mã được đề cập.code line.

    • Đối với các chuỗi chạy trốn và các nhà khai thác không đúng chỗ, đây thường là nơi bạn tìm thấy thủ phạm.

    • Đọc dòng từ trái sang phải và tưởng tượng mỗi biểu tượng làm gì.

  • Thường xuyên hơn bạn cũng cần nhìn vào các dòng trước là tốt.preceding lines as well.

    • Cụ thể, thiếu các dấu chấm phẩy ; bị thiếu ở các kết thúc/câu lệnh trước đó. (Ít nhất là từ quan điểm phong cách.)

    • Nếu mã { khối } được đóng không chính xác hoặc lồng nhau, bạn có thể cần điều tra thêm mã nguồn. Sử dụng thụt mã thích hợp để đơn giản hóa điều đó.

  • Nhìn vào màu sắc cú pháp!syntax colorization!

    • Chuỗi và biến và hằng số nên có màu sắc khác nhau.

    • Các nhà khai thác +-*/. cũng nên được tô màu khác biệt. Nếu không họ có thể ở trong bối cảnh sai.

    • Nếu bạn thấy màu chuỗi kéo dài quá xa hoặc quá ngắn, thì bạn đã tìm thấy một điểm đánh dấu chuỗi không được kết thúc hoặc thiếu " hoặc '.

    • Có hai ký tự chấm câu cùng màu cạnh nhau cũng có thể có nghĩa là rắc rối. Thông thường, các nhà khai thác đơn độc nếu đó không phải là ++, ;0 hoặc dấu ngoặc đơn theo toán tử. Hai chuỗi/định danh trực tiếp theo nhau là không chính xác trong hầu hết các bối cảnh.

  • Whitespace là bạn của bạn. Thực hiện theo bất kỳ phong cách mã hóa.. Follow any coding style.

  • Phá vỡ các dòng dài tạm thời.

    • Bạn có thể tự do thêm dòng mới giữa các toán tử hoặc hằng số và chuỗi. Trình phân tích cú pháp sau đó sẽ cụ thể hóa số dòng cho các lỗi phân tích cú pháp. Thay vì nhìn vào mã rất dài, bạn có thể cô lập biểu tượng cú pháp bị thiếu hoặc bị đặt sai.add newlines between operators or constants and strings. The parser will then concretize the line number for parsing errors. Instead of looking at the very lengthy code, you can isolate the missing or misplaced syntax symbol.

    • Chia các tuyên bố phức tạp ;1 thành các điều kiện ;1 khác biệt hoặc lồng nhau.

    • Thay vì các công thức toán học dài hoặc chuỗi logic, hãy sử dụng các biến tạm thời để đơn giản hóa mã. (Dễ đọc hơn = ít lỗi hơn.)

    • Thêm dòng mới giữa:

      1. Mã bạn có thể dễ dàng xác định là chính xác,
      2. Những phần bạn không chắc chắn,
      3. Và các dòng mà trình phân tích cú pháp phàn nàn về.

      Phân vùng các khối mã dài thực sự giúp định vị nguồn gốc của các lỗi cú pháp.

  • Nhận xét mã xúc phạm. offending code.

    • Nếu bạn không thể cô lập nguồn vấn đề, hãy bắt đầu nhận xét (và do đó tạm thời xóa) các khối mã.

    • Ngay khi bạn thoát khỏi lỗi phân tích cú pháp, bạn đã tìm thấy nguồn vấn đề. Nhìn kỹ hơn ở đó.

    • Đôi khi bạn muốn tạm thời xóa các khối chức năng/phương thức hoàn chỉnh. (Trong trường hợp niềng răng xoăn chưa từng có và mã thụt sai.)

    • Khi bạn không thể giải quyết vấn đề cú pháp, hãy thử viết lại các phần được nhận xét từ đầu.rewrite the commented out sections from scratch.

  • Là một người mới, tránh một số cấu trúc cú pháp khó hiểu.

    • Toán tử điều kiện ternary ;3 có thể nhỏ gọn mã và thực sự hữu ích. Nhưng nó không hỗ trợ khả năng đọc trong mọi trường hợp. Thích các câu ;1 trong khi không được phép.

    • Cú pháp thay thế của PHP (________ 15/________ 16/________ 17) là phổ biến đối với các mẫu, nhưng có thể dễ dàng theo dõi hơn so với các khối { } bình thường.

  • Những sai lầm mới đến phổ biến nhất là:

    • Thiếu dấu chấm phẩy ; để chấm dứt các câu/dòng.

    • Trích dẫn chuỗi không phù hợp cho " hoặc ' và các trích dẫn không được trình bày trong.

    • Các toán tử bị lãng quên, đặc biệt đối với chuỗi T_STRING3.

    • Không cân bằng T_STRING4 ngoặc đơn T_STRING5. Đếm chúng trong dòng báo cáo. Có một số lượng bằng nhau trong số họ?

  • Đừng quên rằng việc giải quyết một vấn đề cú pháp có thể phát hiện ra tiếp theo.

    • Nếu bạn thực hiện một vấn đề sẽ biến mất, nhưng các loại cây khác trong một số mã bên dưới, bạn chủ yếu đi đúng hướng.

    • Nếu sau khi chỉnh sửa một lỗi cú pháp mới trong cùng một dòng, thì thay đổi đã cố gắng của bạn có thể là một thất bại. (Không phải lúc nào cũng vậy.)

  • Khôi phục sao lưu mã làm việc trước đó, nếu bạn không thể sửa nó.

    • Áp dụng một hệ thống phiên bản mã nguồn. Bạn luôn có thể xem T_STRING6 của phiên bản làm việc bị hỏng và cuối cùng. Có thể khai sáng như vấn đề cú pháp là gì.
  • Các ký tự Unicode đi lạc vô hình: Trong một số trường hợp, bạn cần sử dụng hexeditor hoặc trình chỉnh sửa/trình xem khác nhau trên nguồn của bạn. Một số vấn đề không thể được tìm thấy chỉ từ việc nhìn vào mã của bạn.: In some cases, you need to use a hexeditor or different editor/viewer on your source. Some problems cannot be found just from looking at your code.

    • Hãy thử T_STRING7 là biện pháp đầu tiên để tìm các ký hiệu không ASCII.

    • Đặc biệt là BOM, không gian không có chiều rộng hoặc không gian không phá vỡ và các trích dẫn thông minh thường xuyên có thể tìm đường vào mã nguồn.

  • Hãy chăm sóc loại trình tự được lưu trong các tệp.type of linebreaks are saved in files.

    • PHP chỉ là danh dự \ n Newlines, không phải \ r vận chuyển trở lại.

    • Đôi khi là một vấn đề đối với người dùng MacOS (ngay cả trên OS & NBSP; X cho các biên tập viên bị cấu hình sai).

    • Nó thường chỉ các bề mặt như một vấn đề khi các bình luận T_STRING8 hoặc T_STRING9 đơn được sử dụng. Multiline ;0 Nhận xét hiếm khi làm xáo trộn trình phân tích cú pháp khi LineBreaks bị bỏ qua.

  • Nếu lỗi cú pháp của bạn không truyền qua web: Điều xảy ra là bạn có lỗi cú pháp trên máy. Nhưng việc đăng cùng một tập tin trực tuyến không thể hiện nó nữa. Điều đó chỉ có thể có nghĩa là một trong hai điều:syntax error does not transmit over the web: It happens that you have a syntax error on your machine. But posting the very same file online does not exhibit it anymore. Which can only mean one of two things:

    • Bạn đang nhìn sai tập tin!

    • Hoặc mã của bạn chứa Unicode đi lạc vô hình (xem ở trên). Bạn có thể dễ dàng tìm hiểu: Chỉ cần sao chép lại mã của bạn từ biểu mẫu web vào trình soạn thảo văn bản của bạn.

  • Kiểm tra phiên bản PHP của bạn. Không phải tất cả các cấu trúc cú pháp đều có sẵn trên mỗi máy chủ.PHP version. Not all syntax constructs are available on every server.

    • ;1 cho trình thông dịch dòng lệnh

    • ;2 cho một người được gọi qua máy chủ web.


    Những điều đó không nhất thiết giống nhau. Đặc biệt khi làm việc với các khung, bạn sẽ phù hợp với họ.

  • Không sử dụng các từ khóa dành riêng của PHP làm định danh cho các chức năng/phương thức, lớp hoặc hằng số.

  • Thử và lỗi là phương sách cuối cùng của bạn.

Nếu tất cả những người khác thất bại, bạn luôn có thể google thông báo lỗi của mình. Các ký hiệu cú pháp không dễ tìm kiếm (bản thân Over Overflow được lập chỉ mục bởi Symbolhound). Do đó, có thể xem qua một vài trang nữa trước khi bạn tìm thấy một cái gì đó có liên quan.google your error message. Syntax symbols aren't as easy to search for (Stack Overflow itself is indexed by SymbolHound though). Therefore it may take looking through a few more pages before you find something relevant.

Hướng dẫn tiếp theo:

  • Php Debugging Basics của David Sklar
  • Sửa lỗi PHP của Jason McCreary
  • Lỗi PHP - 10 lỗi phổ biến của Mario Lurig
  • Các lỗi và giải pháp PHP phổ biến
  • Cách khắc phục sự cố và sửa chữa trang web WordPress của bạn
  • Hướng dẫn về thông báo lỗi PHP cho các nhà thiết kế - Tạp chí Smashing

Màn hình trắng của cái chết

Nếu trang web của bạn chỉ trống, thì thông thường lỗi cú pháp là nguyên nhân. Bật màn hình của họ với:

  • ;3
  • ;4

Trong ;5 của bạn nói chung hoặc thông qua ;6 cho mod_php hoặc thậm chí ;7 với các thiết lập FASTCGI.

Việc cho phép nó trong tập lệnh bị hỏng là quá muộn vì PHP thậm chí không thể diễn giải/chạy dòng đầu tiên. Một cách giải quyết nhanh chóng đang tạo ra một tập lệnh trình bao bọc, giả sử ;8:

Sau đó gọi mã thất bại bằng cách truy cập tập lệnh trình bao bọc này.

Nó cũng giúp kích hoạt ;9 của PHP và xem xét {0 của WebServer khi một tập lệnh gặp sự cố với các phản hồi của HTTP 500.

Làm thế nào có thể giải quyết lỗi cú pháp phân tích cú pháp bất ngờ trong PHP?

Lỗi phân tích cú pháp: Lỗi cú pháp, bất ngờ xuất hiện khi trình thông dịch PHP phát hiện một phần tử bị thiếu.Hầu hết thời gian, nó được gây ra bởi một khung xoăn bị thiếu}.Để giải quyết vấn đề này, nó sẽ yêu cầu bạn quét toàn bộ tệp để tìm nguồn của lỗi.scan the entire file to find the source of the error.

Mã thông báo bất ngờ về lỗi phân tích cú pháp là gì?

Các ngoại lệ JavaScript "Mã thông báo bất ngờ" xảy ra khi một cấu trúc ngôn ngữ cụ thể được mong đợi, nhưng một cái gì đó khác đã được cung cấp.Đây có thể là một lỗi đánh máy đơn giản.occur when a specific language construct was expected, but something else was provided. This might be a simple typo.

Lỗi phân tích cú pháp trong PHP là gì?

Nếu mã PHP chứa lỗi cú pháp, trình phân tích cú pháp PHP không thể giải thích mã và ngừng hoạt động.Ví dụ, một lỗi cú pháp có thể là một dấu ngoặc kép bị lãng quên, một dấu chấm phẩy bị thiếu ở cuối dòng, dấu ngoặc đơn bị thiếu hoặc các ký tự phụ.. For example, a syntax error can be a forgotten quotation mark, a missing semicolon at the end of a line, missing parenthesis, or extra characters.

Mã thông báo bất ngờ trong PHP là gì?

Thật bất ngờ - điều này có nghĩa là mã bị thiếu một ký tự và PHP đi đến cuối tệp mà không tìm thấy những gì nó đang tìm kiếm.