Thứ Ba, 27 tháng 12, 2016

PHP CODE CẮT CHUỖI LÀM TRÍCH DẪN TRONG TIÊU ĐỀ HOẶC BÀI VIẾT

PHP CODE CẮT CHUỖI LÀM TRÍCH DẪN TRONG TIÊU ĐỀ HOẶC BÀI VIẾT

( Khởi nghiệp với Internet)
Code đuợc dùng để rút ngắn bớt khi nội dung quá dài
function thunho($noidung,$num){
$limit = $num - 1 ;
$str_tmp = '';
$arrstr = explode(" ", $noidung);
if ( count($arrstr) <= $num ) { return $noidung; }
if (!empty($arrstr)) {
for ( $j=0; $j< count($arrstr) ; $j++) {
$str_tmp .= " " . $arrstr[$j];
if ($j == $limit)
{ break; }
}
}
return $str_tmp.'...';
} 

Blog tổng hợp những kinh nghiệm được học, áp dụng và chia sẻ

Thứ Hai, 26 tháng 12, 2016

LẤY TIN RSS VỚI PHP

LẤY TIN RSS VỚI PHP

( Khởi nghiệp với Internet)

LẤY TIN RSS VỚI PHP

sử dụng ajax lấy tin rss trang bất kỳ  với php
<html>
<head>
<script type="text/javascript">
function showRSS(str)
{
if (str.length==0)
  {
  document.getElementById("rssOutput").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7 , Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("rssOutput").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getrss.php?q=" str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select onchange="showRSS(this.value)">
<option value="">Select an RSS-feed:</option>
<option value="Google">Google News</option>
<option value="MSNBC">MSNBC News</option>
</select>
</form>
<br />
<div id="rssOutput">RSS-feed will be listed here...</div>
</body>
</html>

The showResult() function does the following:
    * Check if an RSS-feed is selected
    * Create an XMLHttpRequest object
    * Create the function to be executed when the server response is ready
    * Send the request off to a file on the server
    * Notice that a parameter (q) is added to the URL (with the content of the dropdown list)
The PHP File
The page on the server called by the JavaScript above is a PHP file called "getrss.php":
<?php
//get the q parameter from URL
$q=$_GET["q"];
//find out which feed was selected
if($q=="Google")
  {
  $xml=("http://news.google.com/news?ned=us&topic=h&output=rss");
  }
elseif($q=="MSNBC")
  {
  $xml=("http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml");
  }
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
//get elements from "<channel>"
$channel=$xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
//output elements from "<channel>"
echo("<p><a href='" . $channel_link
  . "'>" . $channel_title . "</a>");
echo("<br />");
echo($channel_desc . "</p>");
//get and output "<item>" elements
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=2; $i  )
  {
  $item_title=$x->item($i)->getElementsByTagName('title')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_link=$x->item($i)->getElementsByTagName('link')
  ->item(0)->childNodes->item(0)->nodeValue;
  $item_desc=$x->item($i)->getElementsByTagName('description')
  ->item(0)->childNodes->item(0)->nodeValue;
  echo ("<p><a href='" . $item_link
  . "'>" . $item_title . "</a>");
  echo ("<br />");
  echo ($item_desc . "</p>");
  }
?>

Blog tổng hợp những kinh nghiệm được học, áp dụng và chia sẻ

TẠO TRANG BLOGSPOT CHO PHÉP AI CŨNG CÓ THỂ ĐĂNG BÀI

( Khởi nghiệp với Internet)
Để tạo 1 trang blogspot cho phép bất kỳ ai cũng có thể đăng bài viết của mình lên đó giống web 2.0 chứ không đơn giản là chỉ  là 1 blog ta hoàn toàn có thể làm được ,
Cách làm hơi dài dòng và vòng vo 1 chút vì ta dùng dịch vụ của google form
tóm tắt qua 1 chút các bước cho các bạn nắm rõ
ta dùng chức năng sẵn có  là gửi đăng bài qua email bí mật trong blogpot .
Khi gửi 1 email với tiêu đề và nội dung email  đến địa chỉ email bí mật này bầi viết sẽ được duyệt hay đăng ngay .
vậy google form sẽ làm gì tất nhiên là sẽ nhận những gì mà người viết bài ( ai cũng có thể viết bài) viết .,sau đó tự động gửi đến email bí mật thông qua 1 script
soạn thảo bài viết google form -> email bí mật -> đăng bài

B1 : tạo  địa chỉ email bí mật - mọi bài viết sẽ được đăng ngay khi gửi đến địa chỉ email này
Cài đặt › Email

tại đây phần Email bạn chuyển từ Tắt sang Xuất bản email ngay lập tức hoặc Lưu email dưới dạng bài đăng nháp (kiểm duyệt)
điền vào phần secretWords chữ bất kì (đây chính là email mà chúng ta gửi bài vào và nó sẽ xuất bản hoặc lưu nháp theo như tùy chọn của bạn ).

B2 : tạo 1 form với google form với các textbox

https://www.google.com/forms/about/

-Tiêu đề - Loại » Văn bản 
- Nội dung bài viết - Loại » Văn bản của đoạn văn
-Tên tác giả - Loại » Văn bản  Hoặc thêm bất kì cái gì khác cũng được - vì dù gì thì nó cũng chỉ cần 2 text chính là tiêu đề và nội dung thôi .

B3 : Add script  cho SpreadSheets
tại sao là script cho SpreadSheets vì khi tạo trên google form tất cả các thông tin  được điền trên



google form sẽ xuất hiện trên 1 SpreadSheets mà google auto tạo ra .
vào Công cụ » Trình chỉnh sửa tệp lệnh".
add script này vào 
function guiBieuMau(e)
{
  // Thay thế bằng địa chỉ email của bước đầu tiên
  var email = "email-bi-mat-buoc-1@blogger.com";
  // Không rành thì đùng đụng vào code ở dưới nhé
  var s = SpreadsheetApp.getActiveSheet();
  var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
  var message = "";
  // Lấy tiêu đề của bài viết
  var subject = e.namedValues["Tiêu đề câu hỏi"];
  // Lấy ra những thông tin muốn xuất bản vào bài viết
  message += e.namedValues["Đặt câu hỏi nhận ngay trả lời?"]
  // Phần bổ sung thêm vào bài viết đơn giản theo cú pháp
   + "Tên tác giả" +  e.namedValues["Tác giả"]
   + "Chữ bất kì hoặc html bất kì" + e.namedValues["Tiêu đề của mục trong Google Form muốn lấy ra"]
   + "\n\n";

  // Dùng MailApp service của Google Apps Script để gửi về email trong Blogger
  MailApp.sendEmail(email, subject, message, {htmlBody: message});
}

ở đây ta đang làm là để thêm script gửi đến email bí mật

B4- tạo trigger - dùng để tự động gửi ngay email khi có thông tin mới được điền trên google form
 tài nguyên -> các kích hoạt của dự án hiện tại .
 chọn hàm để chạy tự động ở đây là guibieumau  - từ bảng tính và khi thay dổi -> save  rồi ok


Vậy là ta đã có 1 google form để đăng bài viết  cho blogspot  rồi
update script
 function guiBieuMau(e)
{
  // Thay thế bằng địa chỉ email của bước đầu tiên
  var email = "xxx6@blogger.com";
  var s = SpreadsheetApp.getActiveSheet();
  var columns = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
  var message = "";

  var responses = s;
  var width = responses.getLastColumn();
  var headers = responses.getRange( 1, 1, 1, width ).getValues()[0];
  var data = responses.getRange( responses.getLastRow(), 1, 1, width ).getValues()[0];
  var message = "";
  var subject=data[3];
  message +='Thành phố :'+ data[1]
  +' Quận / huyện:'+data[2]
  +' Địa chỉ:'+data[3]
  +' Tên wifi :'+data[4]
  +' Pass Wifi :'+data[5]
   + "\n\n";

  MailApp.sendEmail(email, subject, message, {htmlBody: message});
}

Blog tổng hợp những kinh nghiệm được học, áp dụng và chia sẻ

Thứ Bảy, 29 tháng 10, 2016

Hàm preg_match và preg_match_all trong php

Hàm preg_match và preg_match_all trong php

( Khởi nghiệp với Internet)
Hàm preg_match dùng để lấy kết quả theo biểu thức RegEx nhưng nó chỉ lấy đúng một kết quả duy nhất. Ví dụ bạn muốn lấy chuỗi 'freetuts' trong chuỗi 'freetuts và freetuts và freetuts' thì nó chỉ trả về đúng một giá trị 'freetuts'. Vậy để lấy hết tất cả ba chữ thì phải làm thế nào? Ta sẻ sử dụng hàm preg_match_all.

Hàm preg_match_all trong PHP

Hàm preg_match_all cũng có chức năng giống như preg_match đó là so khớp và trả về kết quả của việc so khớp đó. Tuy nhiên vẫn có sự khác biệt đó là:
  • preg_match chỉ chỉ trả về một kết quả cho mỗi regex con.
  • preg_match_all sẽ trả về hết kết quả so khớp chứ không phải là kết quả đầu tiên như preg_match.
Ví dụ: lấy đoạn chuỗi bên trong cặp nháy kép của chuỗi 'xin chào "các bạn", chào mừng đến "freetuts.net"'.

Sử dụng hàm preg_match:

Trong ví dụ này có hai chuỗi nằm trong cặp nháy kép đó là chuỗi 'các bạn' và chuỗi 'freetuts.net'. Bây giờ ta sử dụng hàm preg_match để lấy xem kết quả thế nào.
1
2
3
4
5
$subject = 'Hello "Everybody", welcome to "freetuts.net"';
preg_match('/"(.+)"/', $subject, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
Kết quả sẽ là:
Array
(
[0] => "Everybody", welcome to "freetuts.net"
[1] => Everybody", welcome to "freetuts.net
)
Mục đích của ta chỉ lấy đoạn text bên trong cặp nháy kép, nhưng nó trả về dài quá :D. Lý do là nó duyệt từ dấu nháy đầu chuỗi cho đến cuối chuỗi nên kết quả mới như vậy, đây gọi là hiện tượng Greedy mà chúng ta đã học ở bài các quy tắc Regular Expression căn bản. Vậy để lấy đoạn text trong cặp dấu nháy thứ nhất thì ta phải thêm dấu ? đằng sâu dấu + của chuỗi partern trên, có ý nghĩa là lấy kết quả match đầu tiên (chống greedy).
1
2
3
4
5
$subject = 'Hello "Everybody", welcome to "freetuts.net"';
preg_match('/"(.+?)"/', $subject, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
Kết quả sẽ là:
Array
(
[0] => "Everybody"
[1] => Everybody
)

Sử dụng hàm preg_match_all:

Như vậy các bạn thấy preg_match chỉ lấy được một kết quả duy nhất. Có cách nào lấy hết kết quả không? Để trả lời ta tìm hiểu hàm preg_match_all nhé.
  • Cú pháp: preg_match_all ($pattern, $subject, &$matches)
  • Trong đó:
    • $partern là biểu thức Regular Expression
    • $subject là chuỗi muốn kiểm tra
    • &$matches là biến lưu kết quả sau khi match
Như ở ví dụ trên, tức là lấy tất cả các chuỗi bên trong cặp nháy kép của chuỗi 'xin chào "các bạn", chào mừng đến "freetuts.net"'.
1
2
3
4
5
$subject = 'Hello "Everybody", welcome to "freetuts.net"';
preg_match_all('/"(.+?)"/', $subject, $matches);
echo '<pre>';
print_r($matches);
echo '</pre>';
Kết quả là :

Array
(
[0] => Array
(
[0] => "Everybody"
[1] => "freetuts.net"
)

[1] => Array
(
[0] => Everybody
[1] => freetuts.net
)

)
Kết quả nó trả về một mảng gồm 2 phần tử và giá trị của mỗi phần tử giống như hàm kết quả của hàm preg_match nên mình không giải thích thêm về phần này nhé.
Giờ bạn thay đổi chuỗi $subject = 'Hello "Everybody", welcome to "freetuts.net", thanks for "like it"'. Bạn chạy và kết quả sẽ là:
Array
(
[0] => Array
(
[0] => "Everybody"
[1] => "freetuts.net"
[2] => "like it"
)

[1] => Array
(
[0] => Everybody
[1] => freetuts.net
[2] => like it
)

)
Rất đơn giản đúng không nào. Bây giờ lấy kết quả thì có 2 lựa chọn:
  • Nếu lấy có dấu ngoặc thì chọn phần tử thứ nhất
  • Nếu lấy không có dấu ngoặc thì chọn phần tử thứ 2
Giải thích tại sao lại có 2 phần tử thì như bài trước, phần tử thứ nhất là toàn chuỗi toàn partern, phần tử thứ 2 là kết quả của đoạn RegEx (.+?).

Ví dụ hàm preg_match_all trong PHP

Mình sẽ đưa ra một ví dụ để các bạn thực hành như sau: Lấy tất cả nội dung bên trong tất cả thẻ div của một file html.
Ta có hai vấn đề cần quan tâm:
  • Để lấy tất cả các đoạn text trong tất cả thẻ div thì ta phải dùng đến hàm preg_match_all trong php.
  • Đoạn $pattern sẽ có dạng $pattern = '/<div>(.*?)<\/div>/'. Lưu ý phải có dấu ? nha bạn, vì có dấu ? thì máy sẽ hiểu là lấy từng kết quả chứ không phải duyệt hết chuỗi rồi lấy (gọi là Greedy, bạn quay lại bài trước để xem phần này nhé).
1
2
3
4
5
$subject = '<div>Div1</div><div>Div2</div><div>Div3</div>';
preg_match_all('/<div>(.*?)<\/div>/', $subject, $matches);
echo '<pre>';
var_dump($matches);
echo '</pre>';
Kết quả sẽ là:
array(2) 
{
  [0]=> array(3) 
    {
        [0]=> string(15) "Div1"
        [1]=> string(15) "Div2"
        [2]=> string(15) "Div3"
    }
  
  [1]=> array(3) 
    {
      [0]=> string(4) "Div1"
      [1]=> string(4) "Div2"
      [2]=> string(4) "Div3"
    }
}

Kết luận


Như vậy để lấy tất cả kết quả thì ta sử dụng hàm preg_match_all còn chỉ lấy một kết quả đầu tiên thì ta sử dụng hàm preg_match. Thực tế thì bạn sử dụng hàm preg_match_all để thay thế cho hàm preg_match cũng được bằng cách lấy phần tử đầu tiên, tuy nhiên cách này rất rườm rà nên tùy vào trường hợp mà sử dụng cho hợp lý.
Blog tổng hợp những kinh nghiệm được học, áp dụng và chia sẻ