09/10/2018, 23:40
Lấy content từ trang khác bằng hàm PHP ?
Mình gặp vấn đề trong lúc lấy content từ trang khác bằng hàm file_get_content
Sau khi đã lấy về nội dung mình xử lí substr để cắt và bóc về phần nội dung cần thiết nhưng mình cảm thấy không được tối ưu cho lắm vì nếu trang người ta update content = database thì nội dung đem về trang mình sẽ bị thừa đi hoặc thiếu và hàm substr( do cắt string 1 cách cố định) sẽ cắt bậy bạ làm xấu trang web thậm chí làm bể layout. Các bạn có cách giải pháp nào không ạ thay vì dùng hàm subsrt?
Sau khi đã lấy về nội dung mình xử lí substr để cắt và bóc về phần nội dung cần thiết nhưng mình cảm thấy không được tối ưu cho lắm vì nếu trang người ta update content = database thì nội dung đem về trang mình sẽ bị thừa đi hoặc thiếu và hàm substr( do cắt string 1 cách cố định) sẽ cắt bậy bạ làm xấu trang web thậm chí làm bể layout. Các bạn có cách giải pháp nào không ạ thay vì dùng hàm subsrt?
Bài liên quan
Gợi ý giúp mình nhé!
preg_match("/(<td class=\"text\" valign=\"top\">(.*?)<\/td>)/",$content,$c);
-> $content là string
->trả lại kết quả vào $c -> c sẽ là 1 mảng. Print_r($c) ra để chọn 1 kết quả mong muốn, thường là $c[1] sẽ lấy đoạn giữa.
có thể dùng nhiều chỉ số 1 lúc ví dụ:
preg_match("/(href=\"(.*?)\"(.*?)>(.*?)<\/a>)/",$data,$t);
hoặc có thể dùng preg_match_all để lấy tất cả dữ liệu vào mảng, bác cứ print kết quả ra rùi chọn cái nào như ý.
Tham khảo php.net!
Mình có 1 đống mã HTML nhưng mình chỉ trích ra đoạn cần lấy gần nhất:
<tr>
<td colspan="4">
<p align="center">
<img src="chart10.chart?no_cache=5608" %></td>
</tr>
và dùng 1 biến $content để lưu đoạn code trên vào,
mình sử dụng hàm preg_match_all để lấy đoạn chứa tag img ra:
preg_match_all("/(<td colspan=\"4\">(.*?)<\/td>)/",$content, $match);
và sau đó print_r($match) ra, nhưng kết quả chỉ hiển thị :
Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )
không biết regular pattern trên của mình có sai gì kô? Các bạn giúp mình với !
preg_match_all("/(<td colspan=\"4\">(.*?)<\/td>)/",$content, $match);
sửa lại là
preg_match_all("/<td colspan=\"4\">(.*?)<\/td>/",$content, $match);
và tốt hơn là
preg_match_all('@<td colspan="4">(.*?)</td>@',$content, $match,PREG_SET_ORDER);
phải nắm vững mấy cái hàm này đã
http://quanphp.net/forum/viewtopic.php?t=21
<?
$content = get_file.....();
$start = strpos($content, '<tr>');
$end = strpos($content, '</tr>', $start) + 5;
$string = substr($content, $start, $end - $start);
?>