Filtrare inregistrari nedorite

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

Cosmin Chiru
Senior Member
Mesaje: 251
Membru din: Joi Apr 19, 2007 3:44 pm

Filtrare inregistrari nedorite

Mesajde Cosmin Chiru » Mar Aug 18, 2009 11:06 am

Salutare,

Trebuie sa import niste formatii dintr-un fisier, iar unele au numele de forma aceasta "äåòñêèå ïåñíè" sau aceasta "äåòñêèå ïåñíè". Aveti idee cum pot scapa de astfel de inregistrari?

Multumesc.



Avatar utilizator
LyVyU VT
Senior Member
Mesaje: 224
Membru din: Lun Sep 29, 2008 8:58 am
Localitate: Râmnicu Sărat
Contact:

Mesajde LyVyU VT » Mar Aug 18, 2009 11:13 am

Daca vrei numai litere [A-Za-z] poti folosi functia

foreverlost
Average Member
Mesaje: 132
Membru din: Mie Iul 29, 2009 8:06 pm
Localitate: Gaesti

Mesajde foreverlost » Mar Aug 18, 2009 11:16 am

daca vrei sa scapi de ele pur si simplu si nu te intereseaza sa le traduci, fa un array de caractere permise si tot ceea ce nu este in array le scoti definitiv.Iti recomand sa lucrezi cu ord, iar lista cu toate caracterele de pe tastatura o gasesti pe net, mi se pare ca erau de la 32 la 126 adica poti sa faci un for de la i=32 la i<127 si iti construiesti array-ul de caractere permise sa nu uiti sa pui ord pe caracterul pe care il testezi daca este in array

Cosmin Chiru
Senior Member
Mesaje: 251
Membru din: Joi Apr 19, 2007 3:44 pm

Mesajde Cosmin Chiru » Mar Aug 18, 2009 11:16 am

Pai asta e problema ca nu vreau numai astfel de litere. Sunt formatii in al caror nume exista un accent sau umlaut.

foreverlost
Average Member
Mesaje: 132
Membru din: Mie Iul 29, 2009 8:06 pm
Localitate: Gaesti

Mesajde foreverlost » Mar Aug 18, 2009 11:26 am

for ( $i = 32; $i < 127; $i++ )
{
array_push( $acceptedValues, $i );
}
function remove_non_utf8( $string )
{

$final = ''; // Stringul final curatat (resetare)
$split = str_split( $string ); // sparg stringul pe caractere

foreach ( $split AS $key => $value )
{

if ( in_array( ord( $value ), $acceptedValues ) )
{
// Reconstruiesc stringul numai din caracterele OK:
$final .= $value;
}
else
{
// il inlocuiesc cu un mare nimic (il ignor)
}
}

return $final;
}

Functioneaza asta, doar daca nu vrei sa pastrezi nimic.Daca vrei sa pastrezi ce nu este utf8.Daca vrei sa le traduci se complica ceva lucrurile.
:D

Cosmin Chiru
Senior Member
Mesaje: 251
Membru din: Joi Apr 19, 2007 3:44 pm

Mesajde Cosmin Chiru » Mar Aug 18, 2009 11:44 am

Nu e nevoie de traducere pentru ca e clar ca o insiruire de caractere de genul ala nu se poate traduce in ceva. Am sa incerc exemplul tau, multumesc.

foreverlost
Average Member
Mesaje: 132
Membru din: Mie Iul 29, 2009 8:06 pm
Localitate: Gaesti

Mesajde foreverlost » Mar Aug 18, 2009 11:53 am

OK.Nu prea vad de ce sa nu iti mearga, numai ca nu stiu ce o sa mai ramana din datele tale.S-ar putea ca unele din ele sa fie de neinteles apoi.

MakesYouClick
Average Member
Mesaje: 50
Membru din: Dum Aug 02, 2009 9:49 pm

Mesajde MakesYouClick » Mar Aug 18, 2009 4:05 pm


foreverlost
Average Member
Mesaje: 132
Membru din: Mie Iul 29, 2009 8:06 pm
Localitate: Gaesti

Mesajde foreverlost » Mar Aug 18, 2009 10:21 pm

Nu m-am uitat exact dar parca cele utf8 sunt cele intre 32 si 127


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 7 vizitatori