2017-09-30 15 views
5

Để làm cho nó rõ ràng từ việc bắt đầu, tôi có toàn quyền đồng ý làm điều này bởi quản trị viên trang web cho đến khi họ xây dựng một API.Xóa web đơn giản trong PHP

Điều tôi muốn làm là nhận được một số hoặc bất kỳ phần dữ liệu nào được tìm thấy trong một phần cụ thể của trang web, mặc dù nó nằm trong hàng có thể thay đổi.

Ví dụ về những gì tôi muốn làm, nếu tôi lưu trữ html trong một biến thông qua file_get_contents và muốn tìm một nơi nào đó trong nguồn có thông báo "<p>User status: Online.</p>"; Tôi sẽ cần phải lưu trữ văn bản giữa "status: "".</p>" trong một biến, chỉ biết hai chuỗi này để tìm thấy nó, nhưng cũng biết rằng chỉ có một kịch bản có thể có mà hai văn bản đó nằm trong cùng một dòng

Cảm ơn bạn đã thời gian của bạn

EDIT: Tôi dường như đã quên phần quan trọng nhất trong số này. Vâng, câu hỏi là làm thế nào để làm những gì tôi vừa mô tả, nếu bạn có rất nhiều văn bản, làm thế nào tôi có thể tìm thấy những gì giữa một mảnh văn bản và một đoạn văn bản, và lưu nó trong một biến?

+3

** Vậy là những gì câu hỏi của bạn? ** – ProEvilz

+1

Điều đó thật đáng ngớ ngẩn của tôi, được cập nhật. – Markski

Trả lời

4

Có một vài cách để xóa các trang web, một cách để sử dụng CSS Selectors và một cách khác là sử dụng XPath, cả hai đều chọn các phần tử từ DOM.

Vì tôi không thể xem toàn bộ HTML của trang web nên sẽ khó cho tôi để xác định phương pháp nào tốt hơn cho bạn. Có một tùy chọn khác có thể bị cau mày, nhưng trong trường hợp này nó có thể hoạt động.

Bạn có thể sử dụng một Regex (regular expressions) để tìm các nhân vật, tôi không phải là tốt nhất tại biểu thức thông thường nhưng đây là một số mẫu mã như thế nào mà có thể làm việc:

<?php 

$subject = "<html><body><p>Some User</p><p>User status: Online.</p></body></html>"; 
$pattern = '/User status: (.*)\<\/p\>/'; 
preg_match($pattern, $subject, $matches); 
print_r($matches); 

?> 

Mẫu đầu ra:

Array 
(
    [0] => User status: Online.</p> 
    [1] => Online. 
) 

Về cơ bản những gì regex ở trên đang làm là phù hợp với một mẫu, trong trường hợp này, nó sẽ tìm chuỗi "Trạng thái người dùng:", sau đó khớp với tất cả các ký tự (. *) Đến thẻ đoạn kết thúc (thoát).

Đây là mô hình mà sẽ trở lại chỉ là "trực tuyến" không có giai đoạn này, không chắc chắn nếu tất cả các trạng thái kết thúc trong một thời gian nhưng đây là những gì nó sẽ như thế nào:

'/User status: (.*)\.\<\/p\>/' 
+0

Tôi sẽ thử điều này khi có thể, cảm ơn bạn rất nhiều – Markski

+0

@Markski ya đừng lo lắng! – Asleepace

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