correct listing follows...
<?php
$authors = array('élen', 'Élen', 'Elison', 'ámadeus', 'albert', 'alfred', 'amadeus', 'elen');
function usort_callback($a, $b) { $a = str_replace(array('á', 'é'), array('a', 'e'), strtolower($a)); $b = str_replace(array('á', 'é'), array('a', 'e'), strtolower($b)); return (strcmp($a, $b)); }
usort($authors, 'usort_callback');
var_dump($authors); ?>
regards, m.
John Taylor-Johnston wrote:
http://compcanlit.usherbrooke.ca/new1/db/index.php?ausenquiry=e http://compcanlit.usherbrooke.ca/new1/db/index.php?ausenquiry=é
It still sorts "é" and "e" separately, but without a parse error:
$first = array('à', 'é'); $second = array('a', 'e');
usort($authors, create_function('$a,$b',' $a = str_replace($first, $second, $a); $b = str_replace($first, $second, $b); return strcasecmp($a,$b);'));
Back to the drawing board? I tried this too:
$first = array('à', 'é', 'À', 'É'); $second = array('a', 'e', 'A', 'É');
Ideas? Thanks, John
Parse error on line 40:
39> usort($authors, create_function('$a,$b',' 40> $a = str_replace(array('é', 'à'), array('e', 'a'), $a); 41> $b = str_replace(array('é', 'à'), array('e', 'a'), $b); 42> return strcasecmp($a,$b);'));
<?php
if(!$ausenquiry) $ausenquiry ="a";
echo "<tr><td> Note: A star, \"*\", indicates that the author uses a pseudonym.<br>Noter : Une étoile, \"*\", indique que cet auteur est connu par un nom de plume.
<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\">\n";
###################################################### $myconnection = mysql_connect($server,$user,$pass); mysql_select_db($db,$myconnection);
$news = mysql_query("select id,AUS from $table");
###################################################### $authors = array(); $author_list = array();
while ($mydata = mysql_fetch_object($news)) { $mydata->AUS = str_replace(" ;", ";", $mydata->AUS); $mydata->AUS = str_replace("; ", ";", $mydata->AUS); $tempauthors = explode(";", $mydata->AUS); foreach ($tempauthors as $singleauthor) { if ($singleauthor <> "") { array_push($authors, $singleauthor); $author_list[$singleauthor][] = $mydata->id; // use an associative array... } } }
#sort($authors); #usort($authors, create_function('$a,$b','return strcasecmp($a,$b);'));
#usort($authors, create_function('$a,$b',' # $a = str_replace(array('é', 'à'), array('e', 'a'), $a); # $b = str_replace(array('é', 'à'), array('e', 'a'), $b); # return strcasecmp($a,$b);'));
$first = array('à', 'é', 'À', 'É'); $second = array('a', 'e', 'A', 'É');
usort($authors, create_function('$a,$b',' $a = str_replace($first, $second, $a); $b = str_replace($first, $second, $b); return strcasecmp($a,$b);'));
foreach (array_count_values ($authors) as $author=>$count) {
if((strtolower(substr($author, 0, 1)) == $ausenquiry)) {
echo "<tr bgcolor=\"#D3DCE3\">"; echo "<th align=\"left\" colspan=\"2\"><a href=\"".$SCRIPT_NAME."?searchenquiry=".urlencode($author)."\">".$author."</a> <small>[<--Search Entire Database]</small></th>"; echo "<th align=\"right\" width=\"5%\" nowrap>(".$count." "; if($count > 1) {echo "records found/trouvés)";} else{echo "record found/trouvé)";} echo"</th></tr>\n";
echo "<tr bgcolor=\"#F5F5F5\"><td> </td>"; echo "<td align=\"left\">"; $temp = ""; foreach ($author_list[$author] as $ausid) { $temp .= "<a target=\"printwindow\" href=\"print.php?id=".urlencode($ausid)."\">".$ausid."</a>, "; } $temp = substr("$temp", 0, -2); echo "$temp</td>"; echo "<td> </td>"; echo "</tr>\n"; } }
mysql_close($myconnection); ###################################################### echo "</table> </td> </tr>\n";
?>
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php