Trong đó các định dạng được chia ra nhiêu loại tuỳ thụôc vào các ký tự sử dụng.
% - Không yêu cầu tham số.
b – Trình bày dạng số integer và hiện thực dưới dạng binary.
c - Trình bày dạng số integer và hiện thực dưới dạng mã ASCII. d - Trình bày dạng số integer và hiện thực dưới dạng decimal.
e - Trình bày dạng số logic và hiện thực dưới dạng 1.2e+2.
u - Trình bày dạng số integer và hiện thực dưới dạng decimal không dấu. f - Trình bày dạng số float và hiện thực dưới dạng số chấm động.
o - Trình bày dạng số integer và hiện thực dưới dạng hệ số 10. s - Trình bày dạng chuỗi.
x - Trình bày dạng số integer và hiện thực dưới dạng hệ số 16 với ký tự thường. X - Trình bày dạng số integer và hiện thực dưới dạng hệ số 16 với ký tự hoa.
2.6.3. Hàm chuyển đổi chuỗi
Để chuyển đổi chuỗi ra ký tự hoa thường sử dụng một trong 4 hàm như ví dụ trong trang chuyendoi.php.
Có thể bạn quan tâm!
- => 'nguyễn Văn A', 1 => 'nguyễn Văn B'
- Kết Quả Khi Triệu Gọi Trang Arrayone.php.
- Kết Quả Thực Hiện Trang Mang.php
- Lập trình mã nguồn mở - 9
- Lập trình mã nguồn mở - 10
- Trừu Tượng Hoá Dữ Liệu Ví Dụ: Xây Dựng Chương Trình Quản Lý Sinh Viên
Xem toàn bộ 270 trang tài liệu này.
Ví dụ:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Chuyen doi</h4>
<?php
$str="Welcome to huukhang.com"; echo $str;
echo "<br>";
echo strtoupper($str); echo "<br>";
echo strtolower($str); echo "<br>";
echo ucfirst($str); echo "<br>";
echo ucwords($str); echo "<br>";
?>
</body></html>
Kết quả trình bày như sau:
Hình 2.10. Chuyển đổi chuỗi
2.6.4. Hàm tách và kết hợp chuỗi
Để tách hay kết hợp chuỗi, sử dụng một trong các hàm thường sử dụng như strtok, explode hay substr. Chẳng hạn, ta sử dụng 4 hàm này trong ví dụ trong trang tachchuoi.php.
Ví dụ:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Tach hop chuoi</h4>
<?php
$string = "Xin chao ban da den voi huukhang.com";
$str = $string;
echo $string."<br>";
$tok = strtok($string, " "); while ($tok)
{
echo "Word= $tok<br />";
$tok = strtok(" nt");
}
echo $str."<br>";
echo substr($str,24)."<br>";
$a[]=array();
$a=explode(" ",$str); while($i=each($a))
{
echo $i["value"]."<br>";
}
?>
</body>
</html>
Kết quả trình bày như sau
Hình 2.11. Kết quả sử dụng hàm tách chuỗi
Trong trường hợp kết hợp giá trị của các phần tử của mảng thành chuỗi, sử dụng hàm implode như ví dụ trong trang kethop.php.
Ví dụ:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>Ket hop chuoi</h4>
<?php
$str = "Xin chao ban da den voi huukhang.com";
$a[]=array();
$a=explode(" ",$str); while($i=each($a)) { echo $i["value"]."<br>";
}
$str=implode(" ",$a); echo $str;
?>
</body>
</html>
Kết quả trình bày như sau:
Hình 2.12. Kết quả sử dụng hàm kết hợp chuỗi
2.6.5. Tìm kiếm và thay thế chuỗi
1) Hàm str_replace
Để thay thế chuỗi, sử dụng hàm str_replace, chẳng hạn trong trường hợp lấy giá trị từ thẻ nhập liệu, sau đó tìm kiếm nếu phát hiện dấu „ thì thay thế thành hai dấu nháy như trang replace.php.
Ví dụ:
<html>
<head>
<title>String Functions</title>
</head>
<body>
<h4>That the chuoi</h4>
<?php
$str="";
if (isset($txtfullname))
$str = $txtfullname; if( $str != "");
$str=str_replace("o","a",$str); echo $str."<br>";
?>
<form action=replace.php method=post>
fullname: <input name=txtfullname value="<?=$str?>"><br>
<input type=submit value=Submit>
</form>
</body>
</html>
Khi triệu gọi trang replace.php trên trình duyệt, sẽ có kết quả như sau:
Hình 2.13. Kết quả sử dụng hàm thay thế chuỗi
Ngoài ra, có thể sử dụng hàm strpos (trả về vị trí chuỗi con trong chuỗi mẹ).
2) Hàm preg_replace
Hàm preg_replace dùng để replace một chuỗi nào đó khớp với đoạn Regular Expression truyền vào. Hàm này có chức năng tương tự như str_replace nhưng có sự khác biệt là một bên dùng regex một bên không dùng.
Cú pháp:
preg_replace ( $pattern, $replacement, $subject)
Trong đó:
$partern: là chuỗi Regular Expression
$replacement: là chuỗi replace thành
$subject: là string muốn duyệt và replace
Kết quả trả về của hàm preg_replace là chuỗi đã được replace
Ví dụ:
Replace chuỗi hi thành chuỗi hello trong chuỗi hi everybody, hi there
$partern = '/hi/';
$subject = 'hi everybody, hi there';
$replacement = 'hello';
echo preg_replace($partern, $replacement, $subject);
Kết quả xuất ra màn hình là chuỗi hello everybody, hello there đã được replace
Ví dụ:
Xóa thẻ h1 trong chuỗi <h1>Welcome to freetuts.net</h1>
Nhận xét: Ta thấy để xóa thẻ h1 thì sẽ phải replace cho cả thẻ đóng </h1> và thẻ mở <h1> thành ký tự trống ''. Ta sẽ có 2 cách xử lý cho bài này.
Cách 1: Dùng toán tử OR trong Regular Expression, tức là sẽ kiểm tra nếu là thẻ đóng hoặc thẻ mở thì sẽ bị replace thành ký tự trống. Chuỗi regex sẽ như sau $partern = '/(<h1>)|(</h1>)/'. Ta đã dùng dấu mở và đóng () để gộp 2 nhóm thẻ mở và thẻ đóng lại.
$partern = '/(<h1>)|(</h1>)/';
$subject = '<h1>Welcome to freetuts.net</h1>';
$replacement = '';
echo preg_replace($partern, $replacement, $subject);
Cách 2: Dùng toán tử kiểm tra có hoặc không đó là dấu ?. quay lại bài trước để xem các ví dụ và cách dùng.
Ta thấy thẻ mở <h1> và thẻ đóng </h1> chỉ khác nhau ở chỗ dấu /. Như vậy chuỗi partern sẽ như sau $partern = '/(</?h1>)/'. Vì dấu / là ký tự đặc biệt trong Regular Expression nên ta đã thêm một dấu để đặt trước nó. Dấu ? là có ý nghĩa có hoặc không có ký tự, tức là <h1> hoặc </h1>.
$partern = '/(</?h1>)/';
$subject = '<h1>Welcome to freetuts.net</h1>';
$replacement = '';
echo preg_replace($partern, $replacement, $subject);
Ví dụ:Dùng Regular Expression xóa tất cả những thẻ html (h1, h2, h3, h4, h5) của một đoạn text.
Nếu không dùng hàm preg_replace kết hợp với Regular Expression thì trong php có cung cấp 1 hàm để xử lý vấn đề này, đó là hàm strip_tags. Nhưng trong đề bài yêu cầu dùng Regular Expresision.
Ý tưởng: Ở ví dụ trên ta đã xóa được một thẻ h1, như vậy muốn xóa các thẻ khác thì chỉ cần copy và thay đổi giá trị thẻ là được, cách làm như sau:
$subject = '<h1>This is h1</h1><h2>This is h2</h2><h3>This is h3</h3><h4>This is h4 </div><h5> This is h5 </h5>';
// H1
$subject = preg_replace('/</?h1>/', '', $subject);
// H2
$subject = preg_replace('/</?h2>/', '', $subject);
// H3
$subject = preg_replace('/</?h3>/', '', $subject);
// H4
$subject = preg_replace('/</?h4>/', '', $subject);
// H5
$subject = preg_replace('/</?h5>/', '', $subject); echo $subject;
3) Hàm preg_match_all
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ả. 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. 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" thì code như sau:
$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 chỉ lấy đoạn text bên trong cặp nháy kép, nhưng nó trả về dài quá. 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.
Để lấy đoạn text trong cặp dấu nháy thứ nhất thì ta phải thêm dấu ? đằng sau dấu + của chuỗi partern trên, có ý nghĩa là lấy kết quả match đầu tiên.
$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
)
Như 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 xem qua hàm preg_match_all.
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.
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ư trên, tức là 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"
$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 2 phần tử cha. Nếu để ý thì sẽ thấy mỗi phần tử trả về là kết quả giống như hàm preg_match.
Giờ thay đổi chuỗi $subject = 'Hello "Everybody", welcome to "freetuts.net", thanks for "like it"'.
Array(
[0] => Array(