/** * Render a dump for a string value * * @param mixed $data * @param string $name * @access private * @static */ private static function _string($data, $name) { $collapsed = Krumo::_isCollapsed(self::$_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 = Krumo::_config('display', 'truncate_length', 100); $display_cr = Krumo::_config('display', 'carriage_returns', true); if (strlen($data) > $truncate_length) { $_ = 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} " . krumo::plural($slash_n, "new line"); } if ($slash_n && $slash_r) { $title .= " and "; } if ($slash_r) { $title .= "{$slash_r} " . krumo::plural($slash_r, "carriage return"); } $icon = Krumo::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 Krumo::get_separator() . " <strong class=\"krumo-string\">" . $_; // This has to go AFTER the htmlspecialchars if (strlen($data) > $truncate_length) { print "…"; } print "</strong>"; $ut = Krumo::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>"; }