Výsledky 1 až 10 z 10

Téma: PHP: Nahrazení řetězce dle pravidla

  1. #1
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní PHP: Nahrazení řetězce dle pravidla

    Regulární výrazy byly vždycky můj kámen úrazu. Byl bych tedy moc rád, kdyby mi někdo dokázal pomoct.
    Potřeboval bych převést řetězec podle následujících pravidel:

    Jedná se o text složen s více slov, ale tak že nejsou použity mezery a další slovo vždy začíná velkým písmenem:
    např. "StabilizerEffect"
    Já potřebuji tento řetězec převést na malá písmena (což samozřejmě umím), ale navíc ještě přidat podtržítka tam kde má být jakoby mezera.
    Podle předchozí příkladu má tedy vzniknout "stabilizer_effect".
    Aby to však nebylo jednoduché, tak může dojít k situaci, kdy je více velkých písmen za sebou, které se jen přehodí na malé.
    např. "RadiationUVAandUVB" -> "radiation_uva_and_uvb"

    Pak může ještě nastat dokonce toto: "IndexEEIEffect" -> "index_eei_effect"

    Byl by někdo schopen na toto napsat nějaký nahrazovací regulární výraz?
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  2. #2

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Nema ten druhy priklad byt RadiationUVAAndUVB ?

    Fanless Experiment || Gigabyte Z77-DS3H | Intel i5-3570K | Thermalright HR-02 | 16G DDR3 | Sapphire HD 7750 Ultimate | Crucial M4 256GB | Seasonic X-400FL | Fractal Define R4
    Dell D430 || i945G | C2D 1.2G ULV | 2G DDR2 533 | GMA950 | 12" 1280x800 | 80G 4k2 | 802.3ab | 802.11g | 802.15.1 | HSDPA | Windows 7 x64
    Storage || i965G | E2200 | 4G DDR2 | RAID5 6x Samsung HD154UI 1.5TB - ~7TiB | 802.3ab ...powered by Ubuntu Server x64
    Accessories || E-MU Tracker Pre USB 2.0 | Meier Corda Headsix | Sony MDR-CD470 | Pioneer A-204R | Tesla ARS 9218 32 | LG 32LD350

    "Music is essentially useless, as life is." George Santayana


  3. #3

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    pokud ma monsoon pravdu, tak by mohlo fungovat
    PHP kód:
    preg_replace("/([A-Z]+)/","_\$1",$kde);
    strtolower($kde); 
    (strelba od boku)


    pokud pravdu nemam ... tak to budes mit docela tezky. budes muset najit nejakej klic, podle kteryho to rozdelit ...
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  4. #4
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Máte pravdu, že by to tak skutečně mělo být, nicméně není - s tím už já nic neudělám. Leda říct pánům na druhé straně.
    Fox:
    Díky moc, zítra to hned v práci zkusím.
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  5. #5

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Pokud to tak neni, tak to nemas sanci regularnim vyrazem napsat, jedine jestli slova, jez zacinaji malym, jsou nejak omezena, ale obecne bohuzel.

    Fanless Experiment || Gigabyte Z77-DS3H | Intel i5-3570K | Thermalright HR-02 | 16G DDR3 | Sapphire HD 7750 Ultimate | Crucial M4 256GB | Seasonic X-400FL | Fractal Define R4
    Dell D430 || i945G | C2D 1.2G ULV | 2G DDR2 533 | GMA950 | 12" 1280x800 | 80G 4k2 | 802.3ab | 802.11g | 802.15.1 | HSDPA | Windows 7 x64
    Storage || i965G | E2200 | 4G DDR2 | RAID5 6x Samsung HD154UI 1.5TB - ~7TiB | 802.3ab ...powered by Ubuntu Server x64
    Accessories || E-MU Tracker Pre USB 2.0 | Meier Corda Headsix | Sony MDR-CD470 | Pioneer A-204R | Tesla ARS 9218 32 | LG 32LD350

    "Music is essentially useless, as life is." George Santayana


  6. #6
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Fox:
    Tak jsem to konečně otestoval a výsledek je to příkladu následující (bez zmenšení znaků) - _Index_EEIEffect.
    Chtělo by to tedy ještě říct, aby dával podtržítka před ty velká písmena, za kterými buď následují další velká písmena, nebo před ty, za kterými je hned malé písmeno. Pokud to tedy bude možné
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  7. #7

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    nojo, to jsem nedomyslel.
    tohle bude asi trosku prasecky, ale fungovat by to teoreticky mohlo
    PHP kód:
    preg_replace("/([A-Z][a-z])/","_\$1",$kde);
    preg_replace("/([a-z])([A-Z])/","\$1_\$2",$kde); 
    tohle by melo hodit podtrzitko vsude tam kde je zmena z velkejch na maly a z malejch na velky ...
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  8. #8
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Skvělé a bylo by možné ještě nějak ošetřit, aby se to podtržítko nedávalo i na začátek?
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

  9. #9

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    guessing...
    PHP kód:
    preg_replace("/(.)([A-Z][a-z])/","\$1_\$2",$kde);
    preg_replace("/([a-z])([A-Z])/","\$1_\$2",$kde); 
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  10. #10
    Senior Member mince Avatar uživatele kecinzer
    Založen
    08.10.2002
    Bydliště
    Děčín - perla severu
    Věk
    41
    Příspěvky
    3 184
    Vliv
    318

    Standardní Re: PHP: Nahrazení řetězce dle pravidla

    Skvělé, takhle to funguje.
    Díky moc.
    MacBookPro 13 (mid 2014): Intel Core i5-4278U 2,6GHz | Intel Iris 5100 | 8GB RAM | 128GB SSD | 2560x1600 @ best for retina || HP LP2475w @ DP 1920x1200 || OSX 10.11.2
    ProBook: HP ProBook 650 G1 @ Core i5 4200M 2,5GHz | Intel HD4600 | 12GB RAM | 500 GB Seagate HDD 7200 || 1920x1080 || HP LP2475w @ DP 1920x1200 || Win10 Ent 64bit
    iPhone 6 Plus 16GB Space Gray | iOS 9.2

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. Nahrazeni enter
    Založil koniklec v sekci fóra Programy a problémy s nimi
    Odpovědí: 5
    Poslední příspěvek: 26.08.2006, 11:23
  2. [PHP] Kódování/dekódování řetězce
    Založil Dani Filth v sekci fóra Programování
    Odpovědí: 4
    Poslední příspěvek: 16.01.2005, 21:42
  3. .."doslo k nahrazeni souboru,nezbytnych pro sparavnou&q
    Založil Maverick v sekci fóra Ostatní operační systémy
    Odpovědí: 10
    Poslední příspěvek: 19.12.2003, 09:18
  4. nahrazení OTESu
    Založil Dj Google v sekci fóra Chladiče a všechny druhy chlazení
    Odpovědí: 2
    Poslední příspěvek: 03.05.2003, 09:24

Klíčová slova k tématu

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •