sadistic_son
8.09.2010, 16:39:45
Słuchajcie, mam jakiś string, przykładowo $str='abcdefg1234%^&*';
Oraz tablicę ze znakami dozwolonymi $arr= array('a','b','u','w','y',1,3,8,9,'!','*');
Zapodajcie propozycje jak obrobić $str tak aby pozostały w nim tylko znaki dozwolone, zawarte w $arr. Czyli aby po obróbce $str wyglądało tak: ab13*.
Wyrażenia regularne odpadają.
Crozin
8.09.2010, 17:01:42
Cytat
Wyrażenia regularne odpadają.
A to niby czemu?
sadistic_son
8.09.2010, 17:06:07
Bo nie bardzo je czaję a nie mam obecnie czasu ani tym bardziej chęci się ich uczyć.
Crozin
8.09.2010, 17:10:00
Wyrażenia regularne załatwiają cały problem jedną linią kodu, ale skoro nie to nie... Twój problem.
Baw się z rozwalaniem tekstu na pojedyncze znaki (explode), sprawdzaniem każdego (foreach) znaku czy jest w podanej tablicy (in_array) i jeżeli nie usuwaniem go (unset).
bastard13
8.09.2010, 17:11:56
$zmienna='';
foreach($arr as $v)
$zmienna.=$v;
$zmienna='/[^'.$zmienna.']/';
Tylko musisz zamienić '*' na '\*'
W sumie to rzeczywiście powinna być jedna linijka:)
Quantum
8.09.2010, 17:14:05
$str ='abcdefg1234%^&*';
$arr = array('a','b','u','w','y',1,3,8,9,'!','*');
można też tak, ale też uważam że to głupota zastępować regexp takimi wynalazkami