Re: usort e & é together

From: 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, 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>[&lt;--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>&nbsp;</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>&nbsp;</td>"; echo "</tr>\n"; } } mysql_close($myconnection); ###################################################### echo "</table> </td> </tr>\n"; ?>


« previous php.general (#190212) next »