Caps zoeken in tekst (Opgelost)
Ultimatum - 13/02/2009 09:11
PHP 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
vinTage - 13/02/2009 09:58
Nieuw lid
Ik ben geen regex held, maar dit werkte voor me (na heel vaak gokken )
<?
$str = 'DIT IS EEN TITEL En dit is TEKST en dit ook';
echo preg_replace("~([A-Z ]+ | [a-z ]*)~", "\\1<br />", $str);
<?
$str = 'DIT IS EEN TITEL En dit is TEKST en dit ook' ;
vinTage - 13/02/2009 10:19
Nieuw lid
$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';
$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' ;
Martijn - 13/02/2009 11:05
Crew PHP
[A-Z ] vervnagen door
[A-Z0-9 ] als je cijfers weg wilt
vinTage - 13/02/2009 11:13 (laatste wijziging 13/02/2009 11:24)
Nieuw lid
@DeviourSoul, dan mis je de andere chars nog
Dit lijkt al iets meer, alleen die eigennamen nog...
echo preg_replace("~([A-Z ]+ | [^A-Z]*)~", "\\1<br />", $str);
edit : weer n stapje verder:
<?
$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';
echo preg_replace("~([A-Z ]+ | [^A-Z]+)~", "\\1<br />", $str);
<?
$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' ;
Ultimatum - 13/02/2009 11:35 (laatste wijziging 18/05/2009 09:38)
PHP expert
Bedankt voor je input zover vinTage . Ik heb nu op dit moment dit:
<?php
$input = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN';
return preg_replace("~([A-Z \.\-\s]+ | [a-z \!\:\?\;\,\.\_\s-0-9+]+)~", "\\1<br />", $input);
<?php
$input = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN' ;
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:
<?php
error_reporting(E_ALL);
$sTorentje = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN';
$aWords = array();
$aInput = explode(' ', $sTorentje);
foreach($aInput as $iKey => $sValue) {
if(preg_match('/(?=.+[A-Z]).{2,}/', $sValue)) {
$aWords[] = array('word' => $sValue, 'type' => 'uppercase');
} else {
$aWords[] = array('word' => $sValue, 'type' => 'lowercase');
}
}
echo '<pre>', print_r($aWords) ,'</pre>';
?>
<?php
$sTorentje = 'Nieuwe en gebruikte GASHAARDEN, GEVELKACHELS, HOUTKACHELS en EL. SFEER-VERWARMINGEN Tevens RVS-GEISOL. AFVOER KANALEN' ;
$aInput = explode ( ' ' , $sTorentje ) ; foreach ( $aInput as $iKey => $sValue ) {
$aWords [ ] = array ( 'word' => $sValue , 'type' => 'uppercase' ) ; } else {
$aWords [ ] = array ( 'word' => $sValue , 'type' => 'lowercase' ) ; }
}
?>
Mocht iemand nog afvragen heo ik het voor elkaar heb gekregen .
Gesponsorde links
Dit onderwerp is gesloten .