andrisp Posted April 26, 2006 Report Share Posted April 26, 2006 Tā, te man ir tāda neveikla regexpu čupa, kas nestrādā īsti kā vajadzētu. Doma ir izfiltrēt no stringa visus SIA AS A/S IK utt.. Problēma vispār ir tajā, ka, piem., stringam 'Dzelzceļsabiedrība AS a/s' pirmais AS tiek izgriezts, bet otrais ne, jo abiem pārklājās \s pa starpu. Ieteikumi, lai tiktu izgriezti abi ? Un vispār varbūt varat ieteikt kā uzrakstīt īsāk šos regexpus? $val = 'Dzelzceļsabiedrība AS a/s '; $excl = array('/\s+sia\s+/i', '/\s+as\s+/i', '/\s+a\/s\s+/i', '/\s+ik\s+/i', '/\s+i\/k\s+/i', '/\s+zs\s+/i', '/\s+z\/s\s+/i', '/\s+iu\s+/i', '/\s+i\/u\s+/i', '/^sia\s+/i', '/^as\s+/i', '/^a\/s\s+/i', '/^ik\s+/i', '/^i\/k\s+/i', '/^zs\s+/i', '/^z\/s\s+/i', '/^iu\s+/i', '/^i\/u\s+/i', '/\s+sia$/i', '/\s+as$/i', '/\s+a\/s$/i', '/\s+ik$/i', '/\s+i\/k$/i', '/\s+zs$/i', '/\s+z\/s$/i', '/\s+iu\$/i', '/\s+i\/u$/i'); $val = preg_replace($excl, '', $val); print_r($val); Link to comment Share on other sites More sharing options...
GedroX Posted April 26, 2006 Report Share Posted April 26, 2006 <?php if (!function_exists('escapeExpression')) { function escapeExpression($s) { return preg_replace('/([\/\\\+\-\^\(\)\[\]\.\*\?\$])/', '\\\${1}', $s); } } $val = 'Dzelzcelsabiedribas AS AS a/s ik'; $excl = Array('sia', 'as', 'a/s', 'ik', /*utt*/); foreach ($excl as $key => $value) { $excl[$key] = '/\b' . escapeExpression($value) . '\b/i'; } $val = preg_replace($excl, '', $val); echo $val; ?> Link to comment Share on other sites More sharing options...
andrisp Posted April 26, 2006 Author Report Share Posted April 26, 2006 (edited) Paldies, strādā. Bet turpinot par tēmu: Ir fails utf-8 kodējumā. Izpildot zemāk redzamo kodu, tiek izdots 'Glaanznsakninnu rniakainsi' nevis 'Glazskunu rukisi' kā būtu paredzēts. <?php function rem_lv_chars($str) { $ko = array('/[Āā]/','/[Čč]/','/[Ēē]/','/[Ģģ]/', '/[Īī]/','/[Ķķ]/','/[Ļļ]/', '/[Ņņ]/','/[Ōō]/','/[Šš]/', '/[Ūū]/','/[Žž]/'); $ar = array('a','c','e','g','i','k','l','n','o','s','u','z'); $str = preg_replace($ko, $ar, $str); return $str; } echo rem_lv_chars('Glāžšķūņu rūķīši'); ?> Edited April 26, 2006 by andrisp Link to comment Share on other sites More sharing options...
bubu Posted April 26, 2006 Report Share Posted April 26, 2006 Es nesaprotu nafig tur kautkādus regexpus? Tas ir kā ar lielgabalu šaut pa zvirbuļiem. Tak ar prastu str_replace visu var izdarīt, daudz ātrāk un saprotamāk. Link to comment Share on other sites More sharing options...
GedroX Posted April 26, 2006 Report Share Posted April 26, 2006 (edited) $ko = array('/Ā/','/Č/','/Ē/','/Ģ/', '/Ī/','/Ķ/','/Ļ/', '/Ņ/','/Ō/','/Š/', '/Ū/','/Ž/','/ā/','/č/','/ē/','/ģ/', '/ī/','/ķ/','/ļ/', '/ņ/','/ō/','/š/', '/ū/','/ž/',); $ar = array('A','C','E','G','I','K','L','N','O','S','U','Z', 'a','c','e','g','i','k','l','n','o','s','u','z'); , jo [Āā] tiek uztverts kā 4 simboli - katrs burts - divi ASCII simboli (tautas valodā - ķeburi). P.S. Un bubu kā parasti taisnība... :) Iepriekšējā gadījumā bija vajadzība, jo SIA var visādi uzrakstīt - Sia, sIA, SIA... un vēl visādi vārdu atdalītāji tad jādefinē pašam... Edited April 26, 2006 by GedroX Link to comment Share on other sites More sharing options...
andrisp Posted April 26, 2006 Author Report Share Posted April 26, 2006 Pareizi jau ir, tikai tāpat nesmuki izskatās: function rem_lv_chars($str) { $ko = array('ā','č','ē','ģ','ī','ķ', 'ļ','ņ','ō','š','ū','ž', 'Ā','Č','Ē','Ģ','Ī','Ķ', 'Ļ','Ņ','Ō','Š','Ū','Ž'); $ar = array('a','c','e','g','i','k', 'l','n','o','s','u','z', 'a','c','e','g','i','k', 'l','n','o','s','u','z'); $str = str_replace($ko, $ar, $str); return $str; } Mēģināju jau arī strtolower, lai nebūtu dubultā viss jāraksta, bet lielie latviešu simboli nepareizi konvertējās. Link to comment Share on other sites More sharing options...
GedroX Posted April 26, 2006 Report Share Posted April 26, 2006 Nu tas ir pirmais, kas jāizdara - jāuzraksta funkcija lower latviešu burtiem. :) Link to comment Share on other sites More sharing options...
Delfins Posted April 26, 2006 Report Share Posted April 26, 2006 nevis lielgabals, bet zenītiekārta (ar masīvu šauj) ;) Link to comment Share on other sites More sharing options...
GedroX Posted April 26, 2006 Report Share Posted April 26, 2006 (edited) array( 'ā','č','ē','ģ','ī','ķ', 'ļ','ņ','ō','š','ū','ž', 'Ā','Č','Ē','Ģ','Ī','Ķ', 'Ļ','Ņ','Ō','Š','Ū','Ž' ); array( 'a','c','e','g','i','k', 'l','n','o','s','u','z', 'a','c','e','g','i','k', 'l','n','o','s','u','z' ); Točna zeņitkas!!!! o_O Edited April 26, 2006 by GedroX Link to comment Share on other sites More sharing options...
andrisp Posted April 26, 2006 Author Report Share Posted April 26, 2006 Bet kā tad ? Link to comment Share on other sites More sharing options...
GedroX Posted April 26, 2006 Report Share Posted April 26, 2006 Ir ok. Tas str_replace ir pietiekami labs (tikai taisi, lai Ā pārvēršas A nevis a burtā). Link to comment Share on other sites More sharing options...
andrisp Posted April 26, 2006 Author Report Share Posted April 26, 2006 Man tas nav svarīgi - tāpat pēc tam izmantoju strtolower. Link to comment Share on other sites More sharing options...
bubu Posted April 26, 2006 Report Share Posted April 26, 2006 Točna zeņitkas!!!! o_O Tam koda gabalam, ko tu ieliki, gan nav ne vainas. Taču tam /Ā/... tie jau nav normāli. Link to comment Share on other sites More sharing options...
Recommended Posts