Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] sprawdzanie długości wyrazów w każdej linii, Sortowanie listy według długości znaków
jacek115
post 3.10.2009, 20:23:24
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


Witam,

stworzyłem sobie listę adresów emailowych, która ukazuje się w taki sposób:

Kod
     pracownik-abc@firma.pl<br>
    
       pracownik-abcde@firma.pl<br>
      
       pracownik-abcd@firma.pl<br>
      
       pracownik-abcdef@firma.pl<br>
    
       pracownik-ab@firma.pl<br>
    
       pracownik-abcdefg@firma.pl<br>



Chciałbym ją posortować według ilość znaków każdego adresu emailowego. Nie chodzi mi o sortowanie alfabetyczne, ale od najkrótszego do najdłuższego.

Żeby wyglądało to mniej więcej tak:

Kod
pracownik-ab@firma.pl
  
   pracownik-abc@firma.pl
  
   pracownik-abcd@firma.pl
  
   pracownik-abcde@firma.pl
  
   pracownik-abcdef@firma.pl
  
   pracownik-abcdefg@firma.pl



Doszedłem już do tego że żeby zmierzyć ilość znaków muszę użyć "strlen", ale nadal nie wiem jak zmierzyć ilość znaków każdej osobnej linii, tak żeby można to było później posortować.

Czy ktoś może wie jak mogę to zrobić ?

Nie chciałbym wrzucać tej listy do bazy danych, gdyż będzie ona generowana jedynie na krótki okres i zajmowałoby to jedynie niepotrzebnie miejsce.

Ten post edytował jacek115 3.10.2009, 20:25:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
kubek15
post 3.10.2009, 20:28:24
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 3
Dołączył: 28.06.2008
Skąd: PL

Ostrzeżenie: (0%)
-----


Jeżeli masz to w jakims pliku to normalnie jedziesz w petli i dajesz żeby liczyło ci znaki w linki i potem przechodzenie do nowej itd. Pętlą While możesz to spokojnie zrobić.


--------------------
Go to the top of the page
+Quote Post
jacek115
post 3.10.2009, 20:41:04
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


Cytat(kubek15 @ 3.10.2009, 21:28:24 ) *
Jeżeli masz to w jakims pliku to normalnie jedziesz w petli i dajesz żeby liczyło ci znaki w linki i potem przechodzenie do nowej itd. Pętlą While możesz to spokojnie zrobić.


Ale właśnie nie za bardzo wiem jak zrobić żeby liczyło znaki każdego adresu z osobna.
Go to the top of the page
+Quote Post
cojack
post 4.10.2009, 00:20:34
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Proste jak budowa cepa, od tego jest funkcja usort wygląda to mniej więcej tak:

  1. function cmp($a, $b) {
  2. if ( $a == $b )
  3. return 0;
  4. return( strlen($a) < strlen($b) ) : -1 ? 1;
  5. }
  6.  
  7. usort($array,'cmp');
  8.  
  9. print_r($array);


Dziękuje.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
jacek115
post 4.10.2009, 02:11:18
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


wielkie dzięki cojack

po zamianie
  1. -1 ? 1;


na
  1. -1 : 1;


działa właśnie tak ja chciałem.

Teraz głowie się tylko nad tym jak umieścić wszystkie te adresy w tablicy (array), bo jak już wcześniej wspomniałem mam je w takiej formie:

  1. pracownik-abc@firma.pl<br>
  2.  
  3. pracownik-abcde@firma.pl<br>
  4.  
  5. pracownik-abcd@firma.pl<br>
  6.  
  7. pracownik-abcdef@firma.pl<br>
  8.  
  9. pracownik-ab@firma.pl<br>
  10.  
  11. pracownik-abcdefg@firma.pl<br>


i są one w zmiennej pobrane funkcją file_get_contents z innej podstrony.

Go to the top of the page
+Quote Post
redeemer
post 4.10.2009, 09:11:22
Post #6





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Skorzystaj z funkcji file(), a nie file_get_contents();


--------------------
Go to the top of the page
+Quote Post
jacek115
post 4.10.2009, 18:03:28
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


Cytat(redeemer @ 4.10.2009, 10:11:22 ) *
Skorzystaj z funkcji file(), a nie file_get_contents();



żeby skorzystać z funkcji file() czy nie musiałbym zapisać wcześniej wszystkich adresów w pliku ? Chciałbym uniknąć zapisywania ich w plikach, lub też bazie danych.
Go to the top of the page
+Quote Post
Wicepsik
post 4.10.2009, 18:40:48
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. print_r(explode('<br>', $link));


--------------------
Go to the top of the page
+Quote Post
cojack
post 4.10.2009, 21:52:02
Post #9





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


A no sory, pytajniczki mi się pierdykły smile.gif

Ogólnie ta linijka powinna wyglądać tak:

  1. return( strlen($a) < strlen($b) ) ? -1 : 1;


Ten post edytował cojack 4.10.2009, 21:53:18


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
jacek115
post 5.10.2009, 03:02:37
Post #10





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


Wielkie dzięki wszystkim, działa świetnie biggrin.gif

Mam jeszcze tylko ostanie pytanie:


używając:
  1. print_r($emaile);


dostaje wyniki w takiej formie:

  1. pracownik-ab@firma.pl [1] => pracownik-abc@firma.pl [2] => pracownik-abcd@firma.pl [3] => pracownik-abcde@firma.pl [4]


Jak mogę pokazać wynik w takiej samej formie jak był poprzednio, przed sortowaniem ?

  1. pracownik-ab@firma.pl
  2.  
  3. pracownik-abc@firma.pl
  4.  
  5. pracownik-abcd@firma.pl
  6.  
  7. pracownik-abcde@firma.pl


Go to the top of the page
+Quote Post
krowal
post 5.10.2009, 06:28:08
Post #11





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

Ostrzeżenie: (0%)
-----


Spróbuj tak:
  1. <?php
  2. $tak_jak_bylo_wczesniej = implode("\n\n", $tablica_adresow);
  3. ?>


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
jacek115
post 5.10.2009, 22:53:42
Post #12





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 15.12.2008

Ostrzeżenie: (0%)
-----


Cytat(krowal @ 5.10.2009, 07:28:08 ) *
Spróbuj tak:
[PHP] pobierz, plaintext
  1. <?php
  2. $tak_jak_bylo_wczesniej = implode("\n\n", $tablica_adresow);
  3. ?>
[PHP] pobierz, plaintext


Właśnie o to mi chodziło biggrin.gif

Wielkie dzięki jeszcze raz wszystkim za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:29