If I were you I'd use preg_match_all() so you get the first and last name as 
separate elements, then use usort() to create a custom sorting function based 
on strnatcasecmp()

Be careful about middle names and the such.


On Thursday 24 Jun 2004 04:38, Andre Dubuc wrote:
> Given a text string:
>
> $OK = "Joe Blow, William Howard Anser, Hannie Jansen, etc, etc,";
>
> $_SESSION['txt'] = "$OK";
> session_write_close();
> $txt = $_SESSION['txt'];
>
> $sorted = explode(", ", $txt);
> sort($sorted);
> print "$sorted";
>
> results in a sort based on the first name:
>
> "Hannie Jansen, Joe Blow, William Howard Anser, etc, etc"
>
>
> I tried a another function (before_last)
>
> ******
>
> function before ($this, $inthat)
> {
>       return substr($inthat, 0, strpos($inthat, $this));
> }
>
> function strrevpos($instr, $needle)
> {
>       $rev_pos = strpos (strrev($instr), strrev($needle));
>       if ($rev_pos===false) return false;
>       else return strlen($instr) - $rev_pos - strlen($needle);
> };
>
> function after_last ($this, $inthat)
> {
>       if (!is_bool(strrevpos($inthat, $this)))
>       return substr($inthat, strrevpos($inthat, $this)+strlen($this));
> };
>
> function before_last ($this, $inthat)
> {
>       return substr($inthat, 0, strrevpos($inthat, $this));
> };
>
> ********
>
> to sort on last name, and it does work, but gives only the last item:
>
> $test2 = between_last(' ', ', ', $OK);
> print "$test2";
>
> "Jansen"
>
> How would I get this 'before_last' function to iterate through the initial
> string, so I could build a sorted list with both first and last names,
> sorted by last name? I can't seem to get a proper 'foreach' statement to
> work, nor a 'while' statement.
>
> I'm really confused. I've read almost every entry on arrays/strings and
> searched code snippets. Almost all focus on one element arrays such "apple,
> orange, peach" rather than 2 or more elements such as  "fancy cars, big
> trucks, fast dangerous motorcycles,"
>
> Is it even possible to accomplish this type sort on a string?
>
>
>
> Any advice, pointers, or help will be greatly appreciated,
> Tia,
> Andre

-- 
Evan Nemerson
[EMAIL PROTECTED]
http://coeusgroup.com/en

--
"If anyone can show me, and prove to me, that I am wrong in thought or deed, I 
will gladly change. I seek the truth, which never yet hurt anybody. It is 
only persistence in self-delusion and ignorance which does harm."

-Marcus Aurelius

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to