|
- <?php
-
- namespace Lc\SovBundle\Component;
-
- use Cocur\Slugify\Slugify;
-
- class StringComponent
- {
- public function limitText($text, $limit)
- {
- $text = strip_tags($text);
- if (str_word_count($text, 0) > $limit) {
- $words = str_word_count($text, 2);
- $pos = array_keys($words);
- $text = substr($text, 0, $pos[$limit]) . '...';
- }
- return $text;
- }
-
- public function limitTextByLength($text, $length, $append = '...')
- {
- if (strlen($text) > $length) {
- $text = substr($text, 0, $length) . $append;
- }
-
- return $text;
- }
-
- function truncateHtml($text, $length = 100, $ending = '...', $exact = false, $considerHtml = true)
- {
- if ($considerHtml) {
-
- if (strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
- return $text;
- }
-
- preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
- $total_length = strlen($ending);
- $open_tags = array();
- $truncate = '';
- foreach ($lines as $line_matchings) {
-
- if (!empty($line_matchings[1])) {
-
- if (preg_match(
- '/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is',
- $line_matchings[1]
- )) {
-
-
- } else {
- if (preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) {
-
- $pos = array_search($tag_matchings[1], $open_tags);
- if ($pos !== false) {
- unset($open_tags[$pos]);
- }
-
- } else {
- if (preg_match('/^<\s*([^\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) {
-
- array_unshift($open_tags, strtolower($tag_matchings[1]));
- }
- }
- }
-
- $truncate .= $line_matchings[1];
- }
-
- $content_length = strlen(
- preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i', ' ', $line_matchings[2])
- );
- if ($total_length + $content_length > $length) {
-
- $left = $length - $total_length;
- $entities_length = 0;
-
- if (preg_match_all(
- '/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i',
- $line_matchings[2],
- $entities,
- PREG_OFFSET_CAPTURE
- )) {
-
- foreach ($entities[0] as $entity) {
- if ($entity[1] + 1 - $entities_length <= $left) {
- $left--;
- $entities_length += strlen($entity[0]);
- } else {
-
- break;
- }
- }
- }
- $truncate .= substr($line_matchings[2], 0, $left + $entities_length);
-
- break;
- } else {
- $truncate .= $line_matchings[2];
- $total_length += $content_length;
- }
-
- if ($total_length >= $length) {
- break;
- }
- }
- } else {
- if (strlen($text) <= $length) {
- return $text;
- } else {
- $truncate = substr($text, 0, $length - strlen($ending));
- }
- }
-
- if (!$exact) {
-
- $spacepos = strrpos($truncate, ' ');
- if (isset($spacepos)) {
-
- $truncate = substr($truncate, 0, $spacepos);
- }
- }
-
- $truncate .= $ending;
- if ($considerHtml) {
-
- foreach ($open_tags as $tag) {
- $truncate .= '</' . $tag . '>';
- }
- }
- return $truncate;
- }
-
- function stripAccents($stripAccents)
- {
- return strtr(
- $stripAccents,
- 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ',
- 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY'
- );
- }
-
- function cleanStringToCompare($string)
- {
- return $this->stripAccents(trim(strtolower($string)));
- }
-
- public function slugify($string)
- {
- $slugify = new Slugify();
- return $slugify->slugify($string);
- }
-
- function camelCase($str)
- {
- $i = array("-", "_");
- $str = preg_replace('/([a-z])([A-Z])/', "\\1 \\2", $str);
- $str = preg_replace('@[^a-zA-Z0-9\-_ ]+@', '', $str);
- $str = str_replace($i, ' ', $str);
- $str = str_replace(' ', '', ucwords(strtolower($str)));
- $str = strtolower(substr($str, 0, 1)) . substr($str, 1);
- return $str;
- }
-
- function snakeCase($str)
- {
- $str = preg_replace('/([a-z])([A-Z])/', "\\1_\\2", $str);
- $str = strtolower($str);
- return $str;
- }
-
- public function csvEscape($str)
- {
- return str_replace(array("\r", "\n"), ' ', $str);
- }
-
- public function urlEncryptData($datas){
- $key = 'secretToken';
- foreach ($datas as $data) {
- $key .= $data;
- }
- return md5($key);
- }
-
- public function formatPhoneNumber($phone)
- {
- $phone = preg_replace('`[^0-9]`', '', $phone);
- if(strlen($phone) == 10) {
- $phone = '+33'.substr($phone, 1, 9) ;
- }
- elseif(strlen($phone) == 11 && substr($phone, 0, 2) == '33') {
- $phone = '+'.$phone ;
- }
-
- return $phone ;
- }
-
- }
|