login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Caps zoeken in tekst (Opgelost)

Offline Ultimatum - 13/02/2009 09:11
Avatar van UltimatumPHP expert Ey, ik heb een probleem waar ik niet helemaal uit kom. Ik heb een enkele string waar woorden in hoofdletters in staan of gewoon met kleine letters.

Maar nu moet ik zorgen dat als er woorden in hoofdletters staan dat de woorden erna op een volgende regel komt enzo.

Dus als voorbeeld:
Citaat:
DIT IS EEN TITEL En dit is TEKST en dit ook


Dan moet ik dit terug krijgen
Citaat:
DIT IS EEN TITEL
En dit is
TEKST
en dit ook


Weet iemand hoe ik dit makkelijk kan realiseren?

7 antwoorden

Gesponsorde links
Offline vinTage - 13/02/2009 09:58
Avatar van vinTage Nieuw lid Ik ben geen regex held, maar dit werkte voor me (na heel vaak gokken )



  1. <?
  2.  
  3. $str = 'DIT IS EEN TITEL En dit is TEKST en dit ook';
  4.  
  5. echo preg_replace("~([A-Z ]+ | [a-z ]*)~", "\\1<br />", $str);
Offline Ultimatum - 13/02/2009 10:05
Avatar van Ultimatum PHP expert Heel vet, bedankt vinTage het lijkt te werken . Ik laat het topic nog even open voor het geval ik wel een bug tegen komen 
Offline vinTage - 13/02/2009 10:19
Avatar van vinTage Nieuw lid  
  1. $str = 'DIT IS EEN TITEL En dit is TEKST problemen met eigennamen zoals Jan die dus met een hoofdletter moeten beginnen, of TT van Assen';
Offline Ultimatum - 13/02/2009 10:23
Avatar van Ultimatum PHP expert Die TT van assen is wel een probleem, Jan moet niet op nieuwe regel beginnen. Maar ik heb een ander probleem. Als ik bijvoorbeeld nummers en/of andere tekens (zoals vraagteken, komma, punt etc..) dan komen die woorden ook op nieuwe regel, dat moet nou weer net niet 
Offline Martijn - 13/02/2009 11:05
Avatar van Martijn Crew PHP [A-Z ] vervnagen door
[A-Z0-9 ] als je cijfers weg wilt
Offline vinTage - 13/02/2009 11:13 (laatste wijziging 13/02/2009 11:24)
Avatar van vinTage Nieuw lid @DeviourSoul, dan mis je de andere chars nog 

Dit lijkt al iets meer, alleen die eigennamen nog...
  1. echo preg_replace("~([A-Z ]+ | [^A-Z]*)~", "\\1<br />", $str);



edit: weer n stapje verder:
  1. <?
  2. $str = 'D1T IS EEN TITEL En dit is TEKST problemen met eigennamen zoals Jan d!3 dus met een hoofdletter moeten beginnen, of TT van Assen';
  3.  
  4. echo preg_replace("~([A-Z ]+ | [^A-Z]+)~", "\\1<br />", $str);
Offline Ultimatum - 13/02/2009 11:35 (laatste wijziging 18/05/2009 09:38)
Avatar van Ultimatum PHP expert Bedankt voor je input zover vinTage . Ik heb nu op dit moment dit:
  1. <?php
  2. $input = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN';
  3. return preg_replace("~([A-Z \.\-\s]+ | [a-z \!\:\?\;\,\.\_\s-0-9+]+)~", "\\1<br />", $input);


En dit is de output
Citaat:
Nieuwe en gebruikte
GASHAARDEN, GEVELKACHELS, HOUTKACHELS
en EL. SFEER-VERWARMINGEN
Tevens RVS-GEISOL. AFVOER
KANALEN


Het is bijna goed, alleen moeten de woorden en en Tevens van eener laatste regel alleen staan.

Na een hele lange tijd heb ik het eindelijk opgelost:
  1. <?php
  2.  
  3. $sTorentje = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN';
  4. $aWords = array();
  5. $aInput = explode(' ', $sTorentje);
  6. foreach($aInput as $iKey => $sValue) {
  7. if(preg_match('/(?=.+[A-Z]).{2,}/', $sValue)) {
  8. $aWords[] = array('word' => $sValue, 'type' => 'uppercase');
  9. } else {
  10. $aWords[] = array('word' => $sValue, 'type' => 'lowercase');
  11. }
  12. }
  13.  
  14. echo '<pre>', print_r($aWords) ,'</pre>';
  15. ?>


Mocht iemand nog afvragen heo ik het voor elkaar heb gekregen .
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.236s