ugrás a tartalomhoz

Mintaillesztéses szűrés magyar betűkre és számokra

Anonymous · 2006. Feb. 23. (Cs), 11.45
Egy olyan regex kellene nekem, amivel ha átfutok egy sztringen, akkor az ABC minden betűjét (kicsit és nagyot, ékezeteseket is beleértve), számokat, szóközt, kötőjelet és az aláhúzás karaktert átengedi, bármilyen más karakter legyen a sztringben, akkor megakad.
Ránézek egy ilyen reguláris kifejezésre, és kiráz tőle a hideg, egyszerűen képtelen vagyok megérteni és megtanulni. Ezért örülnék, ha valaki ki tudna a fent leírtakban segteni... :)
 
1

RTFM

Dualon · 2006. Feb. 23. (Cs), 13.19
Bizonyára nem találkoztál még a PHP kézikönyvvel: Pattern Syntax és Pattern Modifiers.
Kérdésed megoldása alig pár betű, nem szeretném lelőni a poént (már csak azért sem, mert olyasmit ne használj, amiről fogalmad nincs). Ha a megalkotott kifejezéseddel valami gond van, szólj bátran!

D.
http://e-arc.hu/
2

<Nincs cím>

Anonymous · 2006. Feb. 23. (Cs), 13.29
Természetesen találkoztam már a manuallal, de a regex mellett a másik gyengém az angol... Lődd le a poént nyugodtan, sőt egyenesen kérem, hogy lődd le, mert mint a nyitó postban említettem, nekem ez a regex enyhén szólva magas. De ha nekiülsz és lefordítod nekem a manual belinkelt részeit, talán az is megteszi. :)
3

van magyar könyv

Táskai Zsolt · 2006. Feb. 23. (Cs), 13.43
van az O'Reilly-nek magyarul kiadott könyve a reguláris kifejezésekről. a Kossuth Kiadó adta ki. biztos van más is. nézz körül. igaza van Dualonnak, ne használj olyasmit, amiről nem tudod, hogy micsoda, és nem tudod megváltoztatni később.
Tasi
4

<Nincs cím>

Anonymous · 2006. Feb. 23. (Cs), 14.21
Oké, tisztázzuk. Ismerem a manualt, sőt a keresőt is ismerem, de nem tudok angolul, és nem áll szándékomban X ezer forintokat kiadni könyvekre (mellesleg, ha akrnék se tudnék).
Szóval, hajlandó valaki válaszolni az alap kérdésre, vagy más fórumot kell keresnem, más emberektől kell segítséget kérnem?
5

nem tudom, hol kell ilyet kérdezni

Táskai Zsolt · 2006. Feb. 23. (Cs), 14.38
léteznek könyvtárak az ilyen esetekre.
amúgy a kérdésed nehezen értelmezhető, mert regexp-ek nem tudnak "megakadni". egyik üzemmódban vagy illeszkednek, vagy nem. másik lehetőség, hogy bizonyos mintákat lecserélnek másokra. nem tudom, melyikre gondolsz...
de még mindig egyetértek Dualonnal.
Tasi
(mellesleg azt írtad fentebb, hogy jó, ha a doksit lefordíták neked...)
6

én pedig nem értek egyet

Anonymous · 2006. Feb. 23. (Cs), 15.02
egy ilyen kérdés feltevése esetén több lehetőségünk is adódik.
1. megmondjuk a megoldást.
2. megmutatjuk, hol tud erről többet olvasni, tanulni.
3. ezek valamilyen keveréke.

ahogy én látom, itt a weblaboron uralkodó tendencia az, hogy a válaszoló általában megoldást is ad a válaszra, valamint egy egyszerűbb kérdésre /ami gyakran a kezdők sajátja/ válaszolva pár odavágó linket is mellékel, a kérdezőre bízva, hogy felhasználja-e őket, érez-e kellő motivációt a tanulásra. (a weblabor fórum a bizonyíték rá, hogy az emberek igenis megnézik a kapott linkeket, mert a kivételektől eltekintve kevés olyan példa van, hogy egymás utáni napokon jön a "hogy kell csatlakozni a mysql-hez", "hogy kell táblát létrehozni mysql-ben" és "hogy kell lekérdezni mysql-ben" téma.) a megoldást kiváltképp akkor szokták megadni, ha a kérdező kifejezetten hangsúlyozza, hogy nem tud angolul, nem is tervez fél nap alatt idegen nyelvet elsajátítani, valamint jelenleg idő-, esetleg pénzhiány miatt könyvet sem fog vásárolni (és az időhiány kifogás a könyvtározásra is).
leginkább akkor zavaró ez a hozzáállás, mikor olyan illető csinálja, aki valószínűleg birtokában van a tudásnak, utal is rá, hogy meg tudná csinálni, mégsem írja be a választ, hanem helyette odavés egy RTFM-t. ez talán helytálló lenne a "melyik fügvénnyel tudok kiíratni php-ben" kérdésre (bár valaki akkor is odaírná a választ), de a reguláris kifejezések szerintem komolyabb hozzáértést igényelnek. nem hiszem, hogy a - főleg amatőr, autodidakta - webfejlesztők olyan nagy aránya értene a reguláris kifejezésekhez, hogy szégyen lenne segítséget kérni.

gex
7

<Nincs cím>

pp · 2006. Feb. 23. (Cs), 15.41
Ránézek egy ilyen reguláris kifejezésre, és kiráz tőle a hideg, egyszerűen képtelen vagyok megérteni és megtanulni.


ez számomra azt jelenti, hogy "valaki csinálja már meg helyettem".

amire a kérdezőnek nincs szüksége:

http://peter.verhas.com/perlh/rege.html

és akkor jön egy sörrel mert "lefordítottam" neki(megkerestem a google-lal hol van a magyar forditas...)

http://www.szabilinux.hu/php/pcre.pattern.syntax.html

pp
9

<Nincs cím>

Anonymous · 2006. Feb. 23. (Cs), 15.58
ez számomra azt jelenti, hogy "valaki csinálja már meg helyettem".

gyakorlatilag erre van ez a fórum, nem? ;]
nem sok olyan téma van, hogy "ebbe és ebbe a problémába futottam és így kell megoldani".

gex
10

flame

pp · 2006. Feb. 23. (Cs), 16.05
Te kinek segítenél:

1. ezt szeretném, de nincs kedvem megcsinálni

2. ezt szeretném, ezt és ezt próbáltam, de egy ponton megakadtam...

pp
12

mindkettőnek

Anonymous · 2006. Feb. 23. (Cs), 16.08
ha módomban áll, akkor mindkettőnek, persze eltérő kedvvel. az első verziónak odaírom a megoldást, a másodiknak pedig még megtoldom egy-két linkkel is.

gex
8

ok

Táskai Zsolt · 2006. Feb. 23. (Cs), 15.58
ezek szerint nem jól hangsúlyoztam. ugyanis a hozzászólásban elrejtettem(?) egy induló kérdést a segítéshez. továbbra is nyitott vagyok az ügyben.
elnézést a félreérthető fogalmazásért.
Tasi
11

preg_match

Anonymous · 2006. Feb. 23. (Cs), 16.05
én segítenék, de én (sem) értek túlzottan a reguláris kifejezésekhez.
szerintem a preg_match() függvény lenne a helyes megoldás. ha ki tudnátok egészíteni a kódot magával a kifejezéssel (azzal a bizonyos pár betűvel), akkor máris megoldottuk volna a problémáját...

<?php
if (preg_match("reguláris kifejezés",$szoveg)) {
  print('jó lesz');
}
else {
  print('nem lesz jó');
}
?>
javítsatok ki, ha tévednék!

gex
17

OFF

Dualon · 2006. Feb. 23. (Cs), 20.50
a megoldást kiváltképp akkor szokták megadni, ha a kérdező kifejezetten hangsúlyozza, hogy nem tud angolul, nem is tervez fél nap alatt idegen nyelvet elsajátítani, valamint jelenleg idő-, esetleg pénzhiány miatt könyvet sem fog vásárolni (és az időhiány kifogás a könyvtározásra is)


Mikor válaszoltam, ezek bármelyikét is hangsúlyozta volna? Vagy említette volna bárki is - akár utalás szintjén - hogy szégyellheti magát, amiért kérdezett? Aligha ezt bizonyítja, hogy még vissza is néztem, megy-e a dolog, mégha már válaszoltam is.

Persze, pár karakterben leírhattam volna a választ, de
1. abból fele annyit nem tanul,
2. nem írta, hol nézett utána, mennyit tud a témáról,
3. nagyon alapvetőt kérdezett.
Beláthatod, hogy megadtam neki a szükséges információkat annyi tájékoztatás alapján, amennyit adott. Mint ahogy én is belátom, hogy nem egyszerű a regexp, én is nyögve jutottam át az alapjain, és elfogadom - és teljesen meg is értem -, hogy nem tud szánni könyvre, vagy nyelvtanfolyamra.

D.
http://e-arc.hu/
13

<Nincs cím>

Anonymous · 2006. Feb. 23. (Cs), 16.13
Azt hittem az a része egyértelmű, de akkor pontosítok:

<?php

if (eregi($regex, $sztring)) {

    // A minta illeszkedik, csak a megadott karaktereket tartalmazza a sztring

} else {

    // A sztringben van(nak) nem megengedett karakter(ek)

}

?>
Egyébként azt mondtam talán megteszi a fordítás. És azt is, hogy képtelen vagyok megtanulni és megérteni, amiből következik, hogy már próbáltam. Sikertelenül.

Mennyi önző és nagyképű ember van a világon, el sem hiszem... Segítséget kérek, elmondom a korlátaimat, erre belerohögnek a pofámba. No Comment
14

rendben

Táskai Zsolt · 2006. Feb. 23. (Cs), 16.34
inkább csak kicsit fafejű vagyok, ha az én világképemtől nagyon eltérő megfogalmazást olvasok. a fenti jellemzést nem tartom helytállónak magamra nézve. nem értettelek pontosan, sajnálom.

$regexp = "^[\w-éáó]*$"
a "\w" jelenti az összes A-Z, a-z és 0-9 karaktereket és az alulvonást, a többi elfogadni kívánt betűt legjobb tudásom szerint fel kell sorolnod a []-n belül. én a fenti módot használnám (további ékezetes betűkkel persze). kicsit talán világosabb lenne a konkrét kiszűrendő karaktereket tiltani:

$regexp = "^[^\"\';]*$"
itt a belső "^" után jönnek a tiltott karakterek (a speciálisak "\" után vagy hexa kóddal).
Tasi
18

<Nincs cím>

Anonymous · 2006. Feb. 24. (P), 14.29
Így nem kell külön megadni a magyar ékezetes betűket:

<?php
setlocale(LC_ALL, "hu_HU");
?>
-- hector
15

egy eszköz

Táskai Zsolt · 2006. Feb. 23. (Cs), 16.37
és ha a kísérletezés alapú megértés útját választod, segíthet egy a weblaboron nemrég ajánlott eszköz:
http://weblabor.hu/blogmarkok/11401
Tasi
16

Tasi lelőtte a poént :)

Dualon · 2006. Feb. 23. (Cs), 20.43
Az a baj, ha most belemennénk a reguláris kifejezésekbe, órákon át írkálhatnánk. Majd figyelem, hátha találok neked magyar regexp leírást.

Most mindössze annyit tennék hozzá a témához, hogy reguláris kifejezések illesztését általában meg lehet oldani preg_match() / preg_replace() függvényekkel, és ezek ereg* megfelelőivel is. Előbbiek gyorsabbak, érdemes azokat használni.
Egyszerű esetekben sokszor a preg_replace is mellőzhető, helyette az str_replace() javasolt - szintén futási sebesség miatt.

D.
http://e-arc.hu/