Re: usort e & é together
| From: | php/ml) | Date: | Mon, 12 Jul 2004 02:29:28 +0000 |
| Subject: | Re: usort e & é together | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-190212@lists.php.net to get a copy of this message | ||
Pardon me for the strtolower line, i've just forgot there... it's 4:30AM here in Slovakia... :/
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, JohnParse error on line 40: 39> usort($authors, create_function('$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) {40> $a = str_replace(array('é', 'à'), array('e', 'a'), $a); 41> $b = str_replace(array('é', 'à'), array('e', 'a'), $b); 42> return strcasecmp($a,$b);'));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"; ?>