本文整理汇总了PHP中Strings::substring方法的典型用法代码示例。如果您正苦于以下问题:PHP Strings::substring方法的具体用法?PHP Strings::substring怎么用?PHP Strings::substring使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Strings
的用法示例。
在下文中一共展示了Strings::substring方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: sanitize
/**
* Filter: removes unnecessary whitespace and shortens value to control's max length.
* @return string
*/
public function sanitize($value)
{
if ($this->control->maxlength && Strings::length($value) > $this->control->maxlength) {
$value = Strings::substring($value, 0, $this->control->maxlength);
}
return Strings::trim(strtr($value, "\r\n", ' '));
}
示例2: rebasedFilename
/**
* Vrátí cestu k souboru, jako kdyby byl umístěn do jiného adresáře i s cestou k sobě.
* @param string $file Jméno souboru
* @param string $from Cesta k němu
* @param string $to Adresář, kam ho chceš přesunout
* @return string
* @throws \InvalidArgumentException
*/
static function rebasedFilename($file, $from, $to)
{
if (!Strings::startsWith($file, $from)) {
throw new \InvalidArgumentException("File {$file} is not in directory {$from}");
}
$secondPart = Strings::substring($file, Strings::length($from));
if ($secondPart[0] == "/") {
$secondPart = substr($secondPart, 1);
}
$newPath = $to . "/" . $secondPart;
return $newPath;
}
示例3: shortenHtml
/**
* Zkracování řetězce na požadovanou délku při zachování všech HTML tagů.
* Nenahrazuje konce řádků za <br />.
* @param string $text Řetězec ke zkrácení
* @param int $length Požadovaná délka výsledného řetězce (včetně ukončení)
* @param string $ending Ukončení, které se přilepí na konec zkráceného řetězce. TRUE = použít &hellip;, tj. trojtečku.
* @param bool $exact False (default) ořízne s ohledem na slova. True ořízne přesně.
* @param bool $considerHtml TRUE = zachovat správným způsobem HTML tagy.
* @return string Zkrácený řetězec.
*/
static function shortenHtml($text, $length = 100, $ending = true, $exact = false, $considerHtml = true)
{
if ($ending === true) {
$ending = "…";
$length += 7;
//Jde o jediný znak, ne o 8 znaků
}
if ($considerHtml) {
// if the plain text is shorter than the maximum length, return the whole text
if (Strings::length(preg_replace('/<.*?>/', '', $text)) <= $length) {
return $text;
}
// splits all html-tags to scanable lines
preg_match_all('/(<.+?>)?([^<>]*)/s', $text, $lines, PREG_SET_ORDER);
$total_length = Strings::length($ending);
$open_tags = array();
$truncate = '';
foreach ($lines as $line_matchings) {
// if there is any html-tag in this line, handle it and add it (uncounted) to the output
if (!empty($line_matchings[1])) {
// if it's an "empty element" with or without xhtml-conform closing slash
if (preg_match('/^<(\\s*.+?\\/\\s*|\\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\\s.+?)?)>$/is', $line_matchings[1])) {
// do nothing
// if tag is a closing tag
} else {
if (preg_match('/^<\\s*\\/([^\\s]+?)\\s*>$/s', $line_matchings[1], $tag_matchings)) {
// delete tag from $open_tags list
$pos = array_search($tag_matchings[1], $open_tags);
if ($pos !== false) {
unset($open_tags[$pos]);
}
// if tag is an opening tag
} else {
if (preg_match('/^<\\s*([^\\s>!]+).*?>$/s', $line_matchings[1], $tag_matchings)) {
//<? //Toto je kvůli mému blbému editoru, který si myslí, že je ukončeno PHP
// add tag to the beginning of $open_tags list
array_unshift($open_tags, Strings::lower($tag_matchings[1]));
}
}
}
// add html-tag to $truncate'd text
$truncate .= $line_matchings[1];
}
// calculate the length of the plain text part of the line; handle entities as one character
$content_length = Strings::length(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) {
// the number of characters which are left
$left = $length - $total_length;
$entities_length = 0;
// search for html entities
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)) {
// calculate the real length of all entities in the legal range
foreach ($entities[0] as $entity) {
if ($entity[1] + 1 - $entities_length <= $left) {
$left--;
$entities_length += Strings::length($entity[0]);
} else {
// no more characters left
break;
}
}
}
$truncate .= Strings::substring($line_matchings[2], 0, $left + $entities_length);
// maximum lenght is reached, so get off the loop
break;
} else {
$truncate .= $line_matchings[2];
$total_length += $content_length;
}
// if the maximum length is reached, get off the loop
if ($total_length >= $length) {
break;
}
}
} else {
if (Strings::length($text) <= $length) {
return $text;
} else {
$truncate = Strings::substring($text, 0, $length - Strings::length($ending));
}
}
// if the words shouldn't be cut in the middle...
if (!$exact) {
// ...search the last occurance of a space...
$spacepos = strrpos($truncate, ' ');
if (isset($spacepos)) {
// ...and cut the text in this position
$truncate = substr($truncate, 0, $spacepos);
}
}
//.........这里部分代码省略.........