How to intercept string function in php_PHP tutorial

WBOY
Release: 2016-07-13 10:27:49
Original
895 people have browsed it

In the project, I encountered a requirement. For example, I want to intercept a string of strings, but I don’t want to intercept half of the words. I looked at the mb_strimwidth() function in the PHP manual. It is said that it will not interrupt. Word, but the test was not successful, so I wrote it myself first. Although there were some minor problems, it was barely usable. I will encapsulate it better when I have time. The implementation principle of this function is to use wordwrap() to interrupt the word, and then use mb_strlen() calculates the length of the word and intercepts it to the length that needs to be intercepted. Test as follows:

//Original string

 $str = 'readonly this boolean attribute indicates that the user cannot modify the value of the control. Unlike the disabled attribute, the readonly attribute does not prevent the user from clicking or selecting in the control. long ge blog's The value of a read-only control is still submitted with the form.';

echo wordcut($str,100);

// Result:

 readonly this boolean attribute indicates that the user cannot modify value of control. Unlike disabled attribute, …

 /**

* This function intercepts English strings and does not interrupt English words, that is, it does not cut a word in half

* note: Not applicable to Chinese, of course you can change it

* note: There is a small bug in this function at present. $cutlength does not refer to the length, but calculates the length of all words and stops when it reaches this number. In fact, the length of spaces is ignored

*/

Function wordcut($string, $cutlength = 250, $replace = ‘…’){

//If the length is insufficient, return directly

 if(mb_strlen($string) <= $cutlength){

return $string;

 }else{

// Calculate the total length of the current word

 $totalLength = 0;

 $datas = $newwords = array();

// Scramble the text

$wrap = wordwrap($string,1,"t");

// form an array

 $wraps = explode("t",$wrap);

foreach ($wraps as $tmp){

// Calculate the length of each word

 $datas[$tmp] = mb_strlen($tmp);

 }

foreach ($datas as $word => $length){

//Save the total length of the word

 $totalLength += $length;

//If it is less than the intercepted length, save it

 if($totalLength < $cutlength){

array_push($newwords,$word);

 }else{

break;

 }

 }

//Generate new string

 $str = trim(implode(" ",$newwords));

Return empty($str) ? $str : $str.’ ‘.$replace;

 }

 }

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/815782.htmlTechArticleIn the project, I encountered a requirement, for example, I want to intercept a string, but I don’t want to intercept half of it. Words, I looked at the mb_strimwidth() function in the PHP manual. It is said that it will not interrupt words, but...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template