private static function _string($data, $name)
{
$collapsed = static::_isCollapsed(static::$_level, 1);
if ($collapsed) {
$collapse_style = 'style="display: none;"';
} else {
$collapse_style = '';
}
// extra
$_ = $data;
// Get the truncate length from the config, or default to 100
$truncate_length = static::_config('display', 'truncate_length', 100);
$display_cr = static::_config('display', 'carriage_returns', true);
$strlen = strlen($data);
if (function_exists('mb_strlen')) {
$strlen = mb_strlen($data, static::getCharset());
}
if ($strlen > $truncate_length) {
if (function_exists('mb_substr')) {
$_ = mb_substr($data, 0, $truncate_length - 1, static::getCharset());
} else {
$_ = substr($data, 0, $truncate_length - 1);
}
$_extra = true;
} else {
$_extra = false;
}
$icon = '';
// Check to see if the line has any carriage returns
if (preg_match("/\n|\r/", $data)) {
$slash_n = substr_count($data, "\n");
$slash_r = substr_count($data, "\r");
$title = "Note: String contains ";
if ($slash_n) {
$title .= "{$slash_n} " . static::plural($slash_n, "new line");
}
if ($slash_n && $slash_r) {
$title .= " and ";
}
if ($slash_r) {
$title .= "{$slash_r} " . static::plural($slash_r, "carriage return");
}
$icon = static::get_icon("information", $title);
// We flag this as extra so the dropdown can show the correctly formatted version
$_extra = true;
}
$_ = htmlentities($_);
// Convert all the \r or \n to visible paragraph markers
if ($display_cr) {
$_ = preg_replace("/(\\r\\n|\\n|\\r)/", "<strong class=\"krumo-carrage-return\"> ¶ </strong>", $_);
} else {
$_ = nl2br($_);
}
$expand_class = '';
if ($_extra) {
$expand_class = 'krumo-expand';
}
print "<li class=\"krumo-child\">";
print "<div class=\"krumo-element {$expand_class}\" ";
if ($_extra) {
print " onClick=\"krumo.toggle(this);\" ";
}
print "onMouseOver=\"krumo.over(this);\" onMouseOut=\"krumo.out(this);\">\n";
print "<a class=\"krumo-name\">{$name}</a> ";
print "<em class=\"krumo-type\">String(<strong class=\"krumo-string-length\">" . strlen($data) . "</strong>)</em> {$icon}";
print static::get_separator() . " <strong class=\"krumo-string\">" . $_;
// This has to go AFTER the htmlspecialchars
if (strlen($data) > $truncate_length) {
print "…";
}
print "</strong>";
$ut = static::is_datetime($name, $data);
if ($ut) {
print " ~ <strong class=\"krumo-datetime\">{$ut}</strong>";
}
// callback
if (is_callable($data)) {
print "<span class=\"krumo-callback\"> | ";
print "(<em class=\"krumo-type\">Callback</em>) <strong class=\"krumo-string\">" . htmlSpecialChars($_) . "()</strong></span>";
}
print "</div>";
if ($_extra) {
$data = htmlentities($data);
$data = nl2br($data);
print "<div class=\"krumo-nest\" {$collapse_style}>";
print "<ul class=\"krumo-node\">";
print "<li class=\"krumo-child\"> <div class=\"krumo-preview\">" . $data . "</div></li>";
print "</ul></div>";
}
print "</li>";
}