2012-06-27 43 views
5

Tôi thức dậy đêm qua với suy nghĩ trong đầu: PHP có thể được sử dụng để tạo các từ ngẫu nhiên có âm thanh tự nhiên không? (Giống như những câu thơ Lorem ipsum).Tạo ngôn ngữ tự nhiên trong PHP

  1. Words là lá thư duy nhất: 'a, e, i, o, u'
  2. Words là thư kép: bất kỳ sự kết hợp của nguyên âm và phụ âm.
  3. Độ dài từ tối đa sẽ là 6 chữ cái.

Mục đích là lấp đầy không gian trên các mẫu trang web thay vì 'Lorem ipsum' hoặc gửi email thử nghiệm cho các tập lệnh PHP nhất định để đảm bảo thư() hoạt động. Tuy nhiên, những suy nghĩ của tôi về cách thức hoạt động của nó là PHP sẽ tạo ra các từ có độ dài ngẫu nhiên, mỗi từ 1-6 chữ cái, với một vài quy tắc "không làm điều này" như "không có hai từ đơn nào bên cạnh nhau "hoặc" không có ba nguyên âm trong một hàng "hoặc" không có ba phụ âm trong một hàng "và tự động thêm dấu chấm câu và viết hoa sau từ 4 đến 8 từ cho một câu.

Điều này có khả thi không, và nếu có, có bất kỳ lớp hoặc chức năng nào có sẵn mà tôi có thể triển khai không?

+1

tôi không thấy bất cứ điều gì trong đề xuất của bạn có thể sẽ không thực hiện được. Vì vậy, câu trả lời có thể là "Có, nó có thể" - nhưng đó thực sự là câu hỏi của bạn? – ametren

+0

có thể? chắc chắn rồi. thực tế? tôi không chắc lắm. có lẽ nó có thể được thực hiện với một kịch bản prolog đơn giản (hoặc một ngôn ngữ hợp lý khác) có thể giải quyết vấn đề của bạn dễ dàng hơn. sau đó bạn có thể gọi nó từ php (chỉ khó khăn của tôi, làm bất cứ điều gì bạn muốn) – Jarry

+0

@ametren - câu hỏi đã chỉnh sửa, tìm kiếm một nơi để bắt đầu thay vì bắt đầu một tài liệu PHP trống và cố gắng tràn vào tâm trí của tôi trên đó. – ionFish

Trả lời

2

Bạn có thể lấy cách tiếp cận ngữ pháp ngữ cảnh miễn phí: http://en.wikipedia.org/wiki/Context-free_grammar

<word> := <vowel> | <consonant><remaining word following consonant> | <vowel><remaining word following vowel> 
<vowel> := a|e|i|o|u 
<consonant> := b|c|d|f|g|... 
<word following vowel> := <consonant><remaining word following consonant> 
...and so on 

Thực hiện rằng ngữ pháp trong bất kỳ ngôn ngữ thủ tục (C và PHP bao gồm), sau đó bắt đầu tạo ra từ căn cứ vào ngữ pháp.

Tôi không biết về bất kỳ khuôn khổ PHP phân tích cú pháp chung chung nhưng bạn có thể nhìn vào thực hành tốt nhất cho các văn bản đó: Best practices for writing a programming language parser

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