mirror of
https://github.com/php/web-php.git
synced 2026-03-23 23:02:13 +01:00
Quickref remake:
- updating code to use modern control structures and variables - double the size of "found functions" for searches - distribute results and the big function list in 3 columns, instead of 2, as there is many data, and there is plenty of space for that - make use of the user's language preference while searching, so only results available in the preferred language will be returned
This commit is contained in:
184
quickref.php
184
quickref.php
@@ -1,110 +1,148 @@
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
require_once 'prepend.inc';
|
||||
// $Id$
|
||||
|
||||
$NUMACROSS = 2;
|
||||
$SHOW_CLOSE = 10;
|
||||
/*
|
||||
|
||||
// A quick fix, the whole file needs a cleanup [Goba]
|
||||
$lang = $LANG;
|
||||
This page is either directly called from the browser, in
|
||||
which case it will always show the full list of "functions"
|
||||
in the user's preferred language version of the PHP
|
||||
documentation.
|
||||
|
||||
In other cases this file is included from manual-lookup.php,
|
||||
which sets $notfound, so we know what function to search for,
|
||||
and display results for that search.
|
||||
|
||||
*/
|
||||
|
||||
function makeTable($lang,$array) {
|
||||
global $NUMACROSS;
|
||||
// Ensure that our environment is set up
|
||||
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/prepend.inc';
|
||||
|
||||
echo '<table border="0" cellpadding="5" cellspacing="0" width="580">';
|
||||
echo '<tr valign="top"><td width="50%">';
|
||||
$i = 0;
|
||||
$limit = ceil(count($array)/$NUMACROSS);
|
||||
asort($array);
|
||||
while (list($file,$name)=each($array)) {
|
||||
if ($i>0 && $i%$limit==0) {
|
||||
echo "</td><td width=\"50%\">\n";
|
||||
}
|
||||
echo "<a href=\"/manual/".$lang."/".$file."\">".$name."</a><br>\n";
|
||||
$i++;
|
||||
}
|
||||
echo '</td></tr></table>';
|
||||
// Constant values for the display
|
||||
define("COLUMNS", 3);
|
||||
define("SHOW_CLOSE", 20);
|
||||
|
||||
// Print out the table of found (or all) functions
|
||||
function quickref_table($functions)
|
||||
{
|
||||
global $LANG;
|
||||
|
||||
echo '<table border="0" cellpadding="5" cellspacing="0" width="100%">';
|
||||
echo '<tr valign="top"><td>';
|
||||
|
||||
// Prepare the data
|
||||
$i = 0;
|
||||
$limit = ceil(count($functions) / COLUMNS);
|
||||
asort($functions);
|
||||
|
||||
// Print out all rows
|
||||
foreach ($functions as $file => $name) {
|
||||
|
||||
// Start a new column
|
||||
if ($i > 0 && $i % $limit==0) {
|
||||
echo "</td><td>\n";
|
||||
}
|
||||
echo "<a href=\"/manual/$LANG/$file\">$name</a><br />\n";
|
||||
$i++;
|
||||
}
|
||||
echo '</td></tr></table>';
|
||||
}
|
||||
|
||||
$d = dir("$DOCUMENT_ROOT/manual/en");
|
||||
$functions = $maybe = $temp = array();
|
||||
$dirh = opendir($_SERVER['DOCUMENT_ROOT'] . "/manual/$LANG");
|
||||
$functions = $maybe = $temp = $parts = array();
|
||||
$p = 0;
|
||||
|
||||
while ( $entry=$d->read() ) {
|
||||
if (substr($entry, 0, 1) == ".") {
|
||||
continue;
|
||||
}
|
||||
if (ereg('(function|class)\.(.+)\.php',$entry,$x)) {
|
||||
$funcname = str_replace('-', '_', $x[2]);
|
||||
$functions[$entry] = $funcname;
|
||||
// Get all file names from the directory
|
||||
while (($entry = readdir($dirh)) !== FALSE) {
|
||||
|
||||
// Skip names starting with a dot
|
||||
if (substr($entry, 0, 1) == ".") { continue; }
|
||||
|
||||
// For function and class pages, get the name out
|
||||
if (preg_match('!(function|class)\.(.+)\.php!', $entry, $parts)) {
|
||||
$funcname = str_replace('-', '_', $parts[2]);
|
||||
$functions[$entry] = $funcname;
|
||||
|
||||
if (function_exists('similar_text') && $notfound) {
|
||||
similar_text($funcname, $notfound, $p);
|
||||
$temp[$entry] = $p;
|
||||
}
|
||||
|
||||
}
|
||||
// Compute similarity of the name to the requested one
|
||||
if (function_exists('similar_text') && $notfound) {
|
||||
similar_text($funcname, $notfound, $p);
|
||||
$temp[$entry] = $p;
|
||||
}
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
arsort($temp);
|
||||
closedir($dirh);
|
||||
|
||||
$i = 0;
|
||||
while (list($file,$p)=each($temp)) {
|
||||
$funcname = $functions[$file];
|
||||
$maybe[$file] = $funcname;
|
||||
if ($p>=70 || stristr($funcname,$notfound)) {
|
||||
$maybe[$file] = '<b>' . $functions[$file] . '</b>';
|
||||
}
|
||||
if ($i++ > $SHOW_CLOSE) {
|
||||
break;
|
||||
}
|
||||
// We have found file names
|
||||
if (count($temp) > 0) {
|
||||
|
||||
// Sort names by percentage
|
||||
arsort($temp);
|
||||
|
||||
// Collect SHOW_CLOSE number of names from the top
|
||||
foreach ($temp as $file => $p) {
|
||||
|
||||
// Stop, if we found enough matches
|
||||
if (count($maybe) >= SHOW_CLOSE) { break; }
|
||||
|
||||
// If the two are more then 70% similar or $notfound is a substring
|
||||
// of $funcname, then the match is a very similar one
|
||||
if ($p >= 70 || (strpos($functions[$file], $notfound) !== FALSE)) {
|
||||
$maybe[$file] = '<b>' . $functions[$file] . '</b>';
|
||||
}
|
||||
// Otherwise it is just similar
|
||||
else {
|
||||
$maybe[$file] = $functions[$file];
|
||||
}
|
||||
}
|
||||
unset($matches, $temp);
|
||||
}
|
||||
|
||||
|
||||
commonHeader("PHP Manual Quick Reference");
|
||||
commonHeader("Manual Quick Reference");
|
||||
?>
|
||||
|
||||
<h1>PHP Function List</h1>
|
||||
|
||||
<?php if ($notfound) { ?>
|
||||
<?php if ($notfound && count($maybe) > 0) { ?>
|
||||
|
||||
<p>
|
||||
Sorry, but the function <b><?php echo htmlspecialchars($notfound); ?></b> is not in the online manual.
|
||||
Perhaps you misspelled it, or it is a relatively new function that hasn't
|
||||
made it into the online documentation yet. The following are the
|
||||
<?php echo $SHOW_CLOSE; ?> functions which seem to be closest in spelling
|
||||
to <b><?php echo htmlspecialchars($notfound); ?></b> (really good matches are in bold). Perhaps
|
||||
you were looking for one of these:
|
||||
Sorry, but the function <b><?php echo htmlspecialchars($notfound); ?></b>
|
||||
is not in the online manual. Perhaps you misspelled it, or it is a relatively
|
||||
new function that hasn't made it into the online documentation yet. The
|
||||
following are the <?php echo count($maybe); ?> functions which seem to be
|
||||
closest in spelling to <b><?php echo htmlspecialchars($notfound); ?></b>
|
||||
(really good matches are in bold). Perhaps you were looking for one of these:
|
||||
</p>
|
||||
|
||||
<?php makeTable($lang,$maybe); ?>
|
||||
<?php quickref_table($maybe); ?>
|
||||
|
||||
<p>
|
||||
If you want to search the entire PHP website for the string
|
||||
"<b><?php echo htmlspecialchars($notfound); ?></b>", then
|
||||
<?php print_link('search.php?show=wholesite&pattern='.urlencode(htmlspecialchars($notfound)), 'click here'); ?>.
|
||||
If you want to search the entire PHP website for the string
|
||||
"<b><?php echo htmlspecialchars($notfound); ?></b>", then
|
||||
<?php
|
||||
print_link('search.php?show=wholesite&pattern=' .
|
||||
urlencode(htmlspecialchars($notfound)),
|
||||
'click here');
|
||||
?>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For a quick overview over all PHP functions,
|
||||
<?php print_link('quickref.php', 'click here') ?>.
|
||||
For a quick overview over all documented PHP functions,
|
||||
<?php print_link('quickref.php', 'click here'); ?>.
|
||||
</p>
|
||||
|
||||
<?php
|
||||
commonFooter();
|
||||
exit;
|
||||
commonFooter();
|
||||
exit;
|
||||
}
|
||||
?>
|
||||
|
||||
<p>
|
||||
Here is a list of all the PHP functions. Click on any one of them to
|
||||
jump to that page in the manual.
|
||||
Here is a list of all the documented PHP functions.
|
||||
Click on any one of them to jump to that page in the
|
||||
manual.
|
||||
</p>
|
||||
|
||||
<?php makeTable($lang,$functions); ?>
|
||||
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<?php commonFooter(); ?>
|
||||
<?php
|
||||
quickref_table($functions);
|
||||
commonFooter();
|
||||
?>
|
||||
Reference in New Issue
Block a user