regular expressions match кирилица
много страно нещо ми се случва, php-то неще да мачне щ, а всички други букви ги мачва или поне така изглежда...някой да е наблюдавал това поведение и да има разрешение на този въпрос... и въобще по-смислен начин за мачване на кирилица от този има ли?
Код:
([ЯВЕРТЪУИОПШЩАСДФГХЙКЛЮЗЬЦЖБНМЧявертъуиопшщасдфгхйклюзьцжбнмч&\%\\\\+!}<\'{;:?).\s" \/\(=,\/\>-]|\w)
Re: regular expressions match кирилица
А не може ли да се въвеждат и обработват като стойности, а не като символи?
//
(Препоръчително) данните да са UTF-8.
Ако е така, трябва първо да се настрои PHP-то.
Има доста настройки, включително и за MB_STRING библиотеката.
Настроиваш internal енкодинга, или гледаш в php.ini :
mb_regex_encoding();
mb_internal_encoding();
След това трябва да се използват не стандартните функции, а multibyte-аналозите (след като се активира този екстеншън).
Ако не е UTF-8: по-добре да се използва preg_match вместо ereg.
Re: regular expressions match кирилица
значи идеята е, (т.к. никой не ми каза къде има български rss-feed с по обширни новини), аз сам да си парсна някой новинарски сайт и да си направя такъв...
тъй, че input-а е примерно news.bg (т.е. какъвто е такъв, не мога да го променям), направих си няколко expression-a, които разкарват comments (<!-- * -->) и скриптовете (<script * /script>), след което разкарвам всички тагове и празни полета. обикновено се получава добър резултат, но като има "щ" и не мачва... , кво му е толкова по-различното на това "щ" не мога да разбера.
ей го на скриптчето:
Код:
$pageurl=$_REQUEST["url"];
$page=file_get_contents($pageurl);
//remove comments
$page=preg_replace('/(\<!--)([ЯВЕРТЪУИОПШЩАСДФГХЙКЛЮЗЬЦЖБНМЧявертъуиопшщасдфгхйклюзьцжбнмч&\%\\\\+!}<\'{;:?).\s" \/\(=,\/\>-]|\w)*(-->)/i','deleted',$page);
//remove scripts
$page=preg_replace('/(\<(no)*script)([ЯВЕРТЪУИОПШЩАСДФГХЙКЛЮЗЬЦЖБНМЧявертъуиопшщасдфгхйклюзьцжбнмч&\%\\\\+!}<\'{;:?).\s" \/\(=,\/\>-]|\w)*(\/(no)*script>)/i','',$page);
$page=preg_replace('@<[\/\!]*?[^<>]*?>@si','',$page); //remove tags
$page=preg_replace('@<[\/\!]*?[^<>]*?@si','',$page); //remove invalid tags
$page=preg_replace('/[\r\n]+[\s\t]*[\r\n]+/','\n',$page); //remove blank lines
echo $page;
Re: regular expressions match кирилица
Абе има му нещо на "Щ"-то, щом и CapsLock не го вдига.
Сигурно няма връзка в тези събития, но буквата си е своенравна и вироглава...
Между другото, как стоят нещата с "Ю"?
Re: regular expressions match кирилица
хъм... при мене капс-а си повдига всичко наред...
и според програмката "Тhe Regex Coach" всичко си варви...
бла,... :( ей затова понякога се дразня на кирлицата, и на умлаутите де...
Re: regular expressions match кирилица
За жалост изобщо не знам PHP и едва ли ще успея да ти помогна.
Сега ще се поровя малко, защото от доста време чета за разнообразни проблеми с кирилицата там. И аз не можах да реша един подобен, свързан със сортиране.
Но може пък нещо да изскочи. Пожелай ми късмет :)
Re: regular expressions match кирилица
пожелав! :)
то и аз разпитвам чичо :Google:, ама още не сам открил правилния въпрос, че да ми отговори правилно...
бтв ю-то се мачва като слънце. пробвах тоя скрипт на 4 различни машини с различни php-та и все същата боза.
има ли начин на regular expression-а да му се каже да match-ва примерно по ascii или unicode код?...
Re: regular expressions match кирилица
http://netinfo.bg и http://dnes.bg имат rss feeds виж първо дали ще ти свършат работа. е само началото на новините е. ама целите новини новини не знам някой да има.
за да разкараш таговете виж функцията на php strip_tags. ама е добре преди това да разкараш css.
парсването на html с регулярни изрази е гадна работа.
за всичките букви на кирилица можеш да опиташ с интервал така: а-яА-Я вместо да ги пишеш всичките. ама не съм го тествал.
Re: regular expressions match кирилица
справих се с проблемацията...
оказа се, че заради translation-а на putty-то, сам виждал и пишел в KOI8-R, където буквите по клавиатурата не са това, което са ;) в частност Щ е е-оборотното...
като дадох echo на regularexpresion-a излязаха някакви тотално разбъркани буквички...
иначе парсването се получи добре... като за междудругото написано скриптче.
поуката е да внимавате с енкодингите, че са 5123457390457 вида...