Các hàm làm việc với chuỗi trong PHP. Các hàm chuỗi trong PHP có độ dài biến PHP

Các lập trình viên thường xuyên phải xử lý các hàm khác nhau để làm việc với các chuỗi trong PHP. Tất cả các chức năng đều được trình bày trong nhiều sách tham khảo khác nhau, nhưng tôi chỉ muốn giới hạn ở những chức năng chính.

Nền hàm PHP - lấy một phần của chuỗi

Khi bạn cần chọn một đoạn có độ dài nhất định từ một chuỗi bắt đầu từ một vị trí nhất định, hàm substr sẽ ra tay trợ giúp.Trong hàm này, được phân tách bằng dấu phẩy, thông tin sau được truyền: văn bản, vị trí bắt đầu và số ký tự. Tham số cuối cùng là tùy chọn và nếu thiếu, kết quả của hàm sẽ là một đoạn trích văn bản nguồn từ vị trí bắt đầu đến cuối dòng.

Hàm PHP strlen - tìm ra độ dài của chuỗi

Hàm này trả về độ dài của chuỗi gốc dưới dạng số nguyên.Với chức năng này, bạn có thể kiểm tra độ dài của dữ liệu được người dùng nhập hoặc có thể là thứ gì đó khác.

Cắt hàm PHP - xóa khoảng trắng thừa khỏi các cạnh của chuỗi

Hàm cắt bỏ bất kỳ ký tự khoảng trắng nào khỏi các cạnh của chuỗi, bao gồm cả ký tự dòng mới. Ngoài ra còn có các hàm rtrim và ltrim giúp loại bỏ khoảng trắng ở cuối hoặc đầu dòng.

Hàm PHP strpos - tìm kiếm một chuỗi

Hàm strpos tìm kiếm một chuỗi con trong một chuỗi và nếu thành công sẽ trả về vị trí bắt đầu của chuỗi con đó. Sau khi tìm thấy chuỗi con đầu tiên, quá trình tìm kiếm sẽ dừng lại.Thứ tự của các đối số trong hàm, như bạn có thể đoán, như sau: chuỗi nguồn, chuỗi con, vị trí bắt đầu. Tham số thứ ba là tùy chọn, nhưng hãy nhớ rằng nó có ở đó.

Hàm PHP Strip_tags - loại bỏ các thẻ HTML và PHP khỏi một chuỗi

Hàm Strip_tags trả về một chuỗi đã loại bỏ các thẻ html và php. Nó sẽ hữu ích cho bạn khi bạn viết mô-đun nhận xét trên trang web của mình, để không tạo cơ hội cho những kẻ tấn công hack trang web của bạn thông qua biểu mẫu.html Và php phải được loại bỏ"; echo Strip_tags($text); echo Strip_tags($text," ");//không xóa thẻ em ?> Đối số đầu tiên của hàm là văn bản nguồn và đối số thứ hai là các thẻ không nên xóa.

Hàm PHP strtoflower - chuyển đổi một chuỗi thành chữ thường

Hàm strtoupper trong PHP - chuyển đổi một chuỗi thành chữ hoa

 Nếu bạn thấy trang này hữu ích, bạn có thể giúp phát triển nó bằng cách đặt

độ dài ký tự (7)

=> string(141) có nghĩa $message là một mảng, vì vậy bạn nên làm strlen($message)< 141 ...

Tôi có một chuỗi dài 141 ký tự. Sử dụng đoạn mã sau, tôi có câu lệnh if để trả về thông báo nếu chuỗi lớn hơn hoặc nhỏ hơn 140.

Libxml_use_internal_errors(TRUE); $dom = DOMDocument mới(); $dom->loadHTMLFile($source); $xml = simplexml_import_dom($dom); libxml_use_internal_errors(FALSE); $message = $xml->xpath("//div[@class="contest"]"); nếu (strlen($tin nhắn)< 141) { echo "There Are No Contests."; } elseif(strlen($message) >142) ( echo "Có một cuộc thi tích cực."; )

Tôi đã sử dụng var_dump trong tin nhắn $ và nó hiển thị string => string(141) đó là vấn đề của tôi. Khi tôi thay đổi số cho câu lệnh if thành<130 и>131, nó vẫn trả về tin nhắn đầu tiên dù dòng lớn hơn 131. Dù tôi dùng số nào nhỏ hơn 141, tôi luôn nhận được "Không có cuộc thi". đã trở lại với tôi.

=> string(141) có nghĩa $message là một mảng, không phải chuỗi và $message là một chuỗi dài 141 ký tự

xpath không trả về một chuỗi. Nó trả về một mảng có các phần tử xml có thể được gửi tới một chuỗi.

If (count($message)) ( if (strlen((string)$message)< 141) { echo "There Are No Contests."; } else if(strlen((string)$message) >142) ( echo "Có một cuộc thi tích cực."; ) )

thay vào đó hãy thử cú pháp chung:

Nếu (strlen($tin nhắn)<140) { echo "less than 140"; } else if (strlen($message)>140) ( echo "hơn 140"; ) else ( echo "chính xác là 140"; )

Bởi vì $xml->xpath luôn trả về mảng , strlen đang đợi đường kẻ .

Tôi gặp vấn đề với điều này và cuối cùng quyết định tạo ra giải pháp của riêng mình. Không sử dụng công cụ biểu thức chính quy:

Hàm chứa($text, $word) ( $found = false; $spaceArray = phát nổ(" ", $text); $nonBreakingSpaceArray = phát nổ(chr(160), $text); if (in_array($word, $spaceArray ) || in_array($word, $nonBreakingSpaceArray)) ( $found = true; ) trả về $found )

Bạn có thể nhận thấy rằng các giải pháp trước đây không phải là câu trả lời cho việc sử dụng một từ làm tiền tố cho một từ khác. Để sử dụng ví dụ của bạn:

$a = "Bạn khỏe không?"; $b = "váy xòe từ thắt lưng"; $c = "là";

Với các ví dụ trên, cả $a và $b đều chứa $c , nhưng bạn có thể muốn hàm của mình cho bạn biết rằng chỉ $a chứa $c .

Xin chào mọi người, hôm nay tôi sẽ kể cho các bạn nghe về cách tìm ra độ dài của chuỗi trong PHP. Chủ đề khá dễ vì mọi thứ sẽ được thực hiện cho bạn một hàm gọi là strlen. Rất đơn giản, hàm lấy một chuỗi và kết quả trả về một số, tức là số ký tự trong chuỗi mà bạn quan tâm. Hãy xem một ví dụ nhỏ nơi chúng ta sẽ sử dụng hàm này.

$string = "Độ dài chuỗi";
$count = strlen( chuỗi $);
nếu như ( số $ > 10 ) {
tiếng vọng "Dòng của bạn có hơn mười ký tự.";
}
elseif ($đếm == 10 ) {
tiếng vọng "Dòng của bạn có mười ký tự.";
}
khác(
tiếng vọng "Dòng của bạn dài chưa đến mười ký tự.";
}
?>

Chúng tôi đã viết một mã đơn giản để xác định có bao nhiêu ký tự trên một dòng, sau đó in một dòng cho biết các ký tự liên quan đến mười. Điều đầu tiên chúng tôi làm là in một chuỗi và đặt nó vào một biến. Chúng tôi đã tạo một biến trong đó kết quả thực hiện sẽ được lưu trữ hàm strlen, tức là số lượng ký tự. Và sử dụng thêm nếu khác xây dựng, chúng ta xác định số lượng ký tự và hiển thị dòng tương ứng trên trình duyệt. Nếu trên một dòng có trên mười ký tự thì xuất ra dòng đầu tiên, nếu đúng mười ký tự thì xuất ra dòng thứ hai, ngược lại thì xuất ra dòng thứ ba, nếu xuất ra thì số ký tự sẽ là ít hơn mười, do đó một điều kiện cụ thể không được chỉ định. Đó là tất cả mã chúng tôi đã viết. Bây giờ mọi thứ đã trở nên cực kỳ rõ ràng với bạn và bạn có thể tìm hiểu độ dài ký tự trong chuỗi bằng PHP, bất cứ lúc nào bạn cần, và trong thực tế, điều này là cần thiết khá thường xuyên. Với điều này tôi nói lời tạm biệt với bạn, hẹn gặp lại!

"API phân tích tham số nội bộ mới hơn đã được áp dụng trên tất cả các tiện ích mở rộng đi kèm với PHP 5.3.x. API phân tích tham số này khiến các hàm trả về NULL khi truyền các tham số không tương thích. Có một số ngoại lệ đối với quy tắc này, chẳng hạn như hàm get_class() , nó sẽ tiếp tục trả về FALSE nếu có lỗi."

Vì vậy, trong PHP 5.3, strlen($attributes) trả về NULL, trong khi ở PHP 5.2, strlen($attributes) trả về số nguyên 5. Điều này có thể ảnh hưởng đến các hàm khác, vì vậy nếu bạn đột nhiên gặp phải các hành vi khác hoặc lỗi mới, hãy kiểm tra xem bạn có đã nâng cấp lên 5.3 (mà chúng tôi đã thực hiện gần đây), sau đó kiểm tra một số cảnh báo trong nhật ký của bạn như thế này:

strlen() dự kiến ​​tham số 1 là chuỗi, mảng được cung cấp trong /var/www/sis/lib/functions/advanced_search_lib.php trên dòng 1028

Nếu vậy thì rất có thể bạn đang trải qua hành vi thay đổi này.

1 năm trước

Nếu văn bản của bạn chứa ký tự UTF8 (ví dụ: ký tự tiếng Ả Rập), mb_substr có thể sử dụng thay vì strlen.
nhưng nếu chuỗi chứa UTF16 (wmoji, Smiley) thì bạn có thể sử dụng phương pháp này để có độ dài chính xác:

Bởi vì một số biểu tượng cảm xúc (ví dụ: ) là 2 , 3 hoặc 4 byte !

2 năm trước

Khi kiểm tra độ dài để đảm bảo một giá trị sẽ vừa với trường cơ sở dữ liệu, hãy lưu ý sử dụng đúng hàm.

Có ba tình huống có thể xảy ra:

1. Trường hợp có khả năng xảy ra nhất: cột cơ sở dữ liệu là UTF-8 với độ dài được xác định bằng các điểm mã unicode (ví dụ: mysql varchar(200) cho cơ sở dữ liệu utf-8).

// ok nếu php.ini default_charset được đặt thành UTF-8 (= giá trị mặc định)
mb_strlen ($giá trị);
iconv_strlen ($giá trị);
// luôn ổn
mb_strlen($value, "UTF-8");
iconv_strlen($value, "UTF-8");

// XẤU, không sử dụng:
strlen(utf8_decode($value)); // ngắt đối với một số ký tự nhiều byte
đồ thị_strlen ($ giá trị); // đếm đồ thị, không phải điểm mã
?>

2. Cột cơ sở dữ liệu có độ dài được xác định bằng byte (ví dụ: VARCHAR2(200 BYTE) của Oracle)

// ok, nhưng giả sử mbstring.func_overload là 0 trong php.ini (= giá trị mặc định)
strlen ($ giá trị);
// được, buộc phải tính theo byte
mb_strlen ($giá trị, "8bit")
?>

3. Cột cơ sở dữ liệu nằm trong một bộ ký tự khác (UTF-16, ISO-8859-1, v.v.) với độ dài được xác định bằng ký tự/điểm mã.

Tìm bộ ký tự được sử dụng và chuyển nó một cách rõ ràng cho hàm độ dài.

// được, bộ ký tự được hỗ trợ:
mb_strlen ($giá trị, $bộ ký tự);
// được, bộ ký tự được hỗ trợ: https://www.gnu.org/software/libiconv/
iconv_strlen ($giá trị, $charset);
?>

6 năm trước

Hàm strlen của PHP hoạt động khác với hàm C strlen về cách xử lý các byte rỗng ("\ 0").

Trong PHP, byte rỗng trong chuỗi KHÔNG được tính là phần cuối của chuỗi và bất kỳ byte rỗng nào đều được bao gồm trong độ dài của chuỗi.

Ví dụ: trong PHP:

strlen("te\0st") = 5

Trong C, lệnh gọi tương tự sẽ trả về 2.

Do đó, hàm strlen của PHP có thể được sử dụng để tìm số byte trong chuỗi nhị phân (ví dụ: dữ liệu nhị phân được trả về bởi base64_decode).

2 năm trước

Có RẤT NHIỀU thông tin sai lệch ở đây mà tôi muốn sửa lại! Nhiều người đã cảnh báo không nên sử dụng strlen(), vì nó "siêu chậm". Chà, điều đó có lẽ đúng trong các phiên bản PHP cũ. Nhưng đối với PHP7 thì điều đó" điều đó chắc chắn không còn đúng nữa. Bây giờ là SIÊU nhanh!

Tôi đã tạo một chuỗi 20,00,000 byte (~20 megabyte) và lặp lại MỘT TRĂM TRIỆU LẦN trong một vòng lặp. Mỗi lần lặp vòng lặp đều thực hiện một strlen() mới trên chuỗi rất dài đó.

Kết quả: 100 triệu cuộc gọi strlen() trên chuỗi 20 megabyte chỉ mất tổng cộng 488 mili giây. Và các lệnh gọi strlen() không hề chậm hơn/nhanh hơn ngay cả khi tôi tạo chuỗi nhỏ hơn hoặc lớn hơn. strlen() gần như là một thao tác siêu nhanh, liên tục.

Vì vậy, PHP7 lưu trữ độ dài của mỗi chuỗi dưới dạng một trường mà nó luôn có thể tra cứu mà không cần phải đếm ký tự. Hoặc nó lưu trữ kết quả của strlen() cho đến khi nội dung chuỗi thực sự thay đổi. Dù bằng cách nào, bây giờ bạn không bao giờ nên lo lắng về hiệu suất strlen() nữa. Kể từ PHP7, nó siêu nhanh!

Đây là mã điểm chuẩn hoàn chỉnh nếu bạn muốn sao chép nó trên máy của mình:

$ lần lặp = 100000000; // 100 triệu
$str = str_repeat ("0", 20000000 );

// vòng lặp chuẩn và gán biến để tính chi phí vòng lặp
$start = microtime(true);
cho($i = 0 ; $i< $iterations ; ++ $i ) {
$len = 0 ;
}
$end = microtime(true);
$loop_elapsed = 1000 * ($end - $start );

// điểm chuẩn strlen trong một vòng lặp
$len = 0 ;
$start = microtime(true);
cho($i = 0 ; $i< $iterations ; ++ $i ) {
$len = strlen ($str );
}
$end = microtime(true);
$strlen_elapsed = 1000 * ($end - $start );

// trừ chi phí vòng lặp khỏi tính toán tốc độ strlen()
$strlen_elapsed -= $loop_elapsed ;

echo "\nđộ dài chuỗi: ( $len ) \ntest mất: ( $strlen_elapsed ) mili giây\n" ;

?>

5 năm trước

Hàm limit_text($text, $limit = 100000000000) (
nếu (stlen ($văn bản)< $limit) {
trả lại văn bản $;
}
$split_words = phát nổ(" ", $text);
$out = null;
foreach ($split_words dưới dạng $word) (
if ((strlen($word) > $limit) && $out == null) (
return substr($word, 0, $limit)."...";
}

Nếu ((strlen($out) + strlen($word)) > $limit) (
trả lại $ out . "...";
}
$out.=" " . $từ;
}
trả lại $out;
}

echo limit_text("Xin chào thế giới lorem ipsum",10);

Bất kỳ lập trình viên web có lòng tự trọng nào cũng nên biết ngôn ngữ PHP, ngôn ngữ này có thể được sử dụng để tạo các trang web. Ngôn ngữ này dựa trên C và C++ và do đó có nhiều cấu trúc đặc trưng của ngôn ngữ này. Ví dụ, trong PHP, độ dài của một chuỗi được trả về bởi một hàm có cùng tên như trong C. Bài viết này nói về các chuỗi cũng như các thao tác có thể thực hiện trên chúng.

Nhưng trước khi nói về hàm, hãy đưa ra một định nghĩa cơ bản. Chuỗi là một chuỗi các ký tự, mỗi ký tự chiếm đúng một byte. Điều này có nghĩa là PHP hỗ trợ 256 ký tự. Theo logic, điều này dẫn đến việc không có hỗ trợ cho Unicode trong ngôn ngữ này - xét cho cùng, có nhiều ký tự hơn trong Unicode.

PHP có những thao tác nào với chuỗi? Độ dài của một chuỗi, cách nối (kết nối) của chúng, trả về mã ký tự và ngược lại là những ví dụ đơn giản nhất. Có những cái phức tạp hơn - tìm kiếm chuỗi con, băm, đảo ngược. Và còn có những việc như xóa thẻ, tìm kiếm theo mẫu, chia chuỗi con bằng dấu phân cách... Bạn không thể liệt kê hết mọi thứ! Vì vậy, chúng ta sẽ nói về những điều phổ biến và hữu ích nhất trong số đó.

Hàm đầu tiên và được sử dụng phổ biến nhất trong PHP là độ dài chuỗi. Nó được gọi là strlen và lấy một chuỗi ký tự làm tham số. Nó đơn giản.

$bar=strlen($foo); // $bar bằng ba

Trong PHP, độ dài của chuỗi có thể bằng 0. Một dòng như vậy được gọi là trống.

Chức năng tiếp theo là nối hoặc hợp nhất. Nói một cách đơn giản, nó tạo thành một trong hai dòng.

$foo=”Xin chào,”;

$bar=”hòa bình!”;

$baz=concat($foo, $bar);

echo $baz; // sẽ in ra “Xin chào thế giới!”

Ngoài ra còn có hai hàm nghịch đảo để làm việc với các ký tự riêng lẻ. Ord - trả về mã ký tự và chr - xác định ký tự theo mã.

$bar=ord($foo); // $bar là 113

$baz=chr($bar); // $baz bằng “q”

Không thể không kể đến một chức năng thú vị khác - ngày tháng. Trong PHP, chuỗi có thể được sử dụng làm mẫu để hiển thị thời gian. Ví dụ: nếu bạn chuyển chuỗi “H:m:s” sang ngày và hiển thị kết quả, thời gian máy chủ hiện tại sẽ xuất hiện trên màn hình, phân tách bằng dấu hai chấm, ví dụ: “11:08:34”.

Bây giờ chúng ta hãy nhìn vào chức năng phát nổ. Nó chia chuỗi thành các phần tử, coi ký tự được chỉ định là ranh giới của mỗi phần tử. Nghe có vẻ khá phức tạp nhưng thực tế mọi thứ đều khá rõ ràng. Ví dụ: có một dòng “root|12:56:49|wheel”. Sau đó bạn có thể viết như thế này:

$foo=explode(“root|12:56:49|wheel”, “|”);

Kết quả là mảng $foo sẽ chứa ba phần tử - “root”, “12:56:49”, “wheel”. Nếu bạn không chỉ định dấu phân cách khi gọi hàm, nó sẽ được coi là khoảng trắng theo mặc định. Có thêm một tham số tùy chọn - số lượng chuỗi con được phân bổ tối đa.

Hàm sau loại bỏ các thẻ HTML khỏi một chuỗi. Nó được gọi là dải_tags. Giống như hàm phát nổ, nó có tham số thứ hai tùy chọn - danh sách các thẻ cần để lại.

Các hàm đơn giản - nối, tìm kiếm chuỗi con, độ dài chuỗi - PHP diễn giải khá nhanh. Tuy nhiên, việc xử lý tìm kiếm bằng mẫu hoặc xóa thẻ có thể mất khá nhiều thời gian. Vì vậy, các chương trình cần phải được biên dịch một cách chính xác, có tính đến thực tế là việc thực hiện nó cần một thời gian nhất định. Một tập lệnh bình thường sẽ chạy tối đa 10 giây và sau đó nó cần hiển thị ít nhất một phần của trang web, nếu không người dùng sẽ rời khỏi nó. Nhưng thông thường các ứng dụng web hoạt động nhanh hơn nhiều vì mã PHP chạy trên máy chủ và trình duyệt nhận được một trang được tạo từ tập lệnh, trong đó có chứa đầu ra của tập lệnh PHP.