Sto provando tra ucfirst, ucwords ecc ma dopo un punto non riesco a far uscire la lettera in maiuscolo.
Sapete dirmi come devo fare?
Sto provando tra ucfirst, ucwords ecc ma dopo un punto non riesco a far uscire la lettera in maiuscolo.
Sapete dirmi come devo fare?
Mai dire Mai
potresti provare ad esplodere il testo sul punto e settare la prima lettera in maiuscolo di ogni frase
non l'ho provata quindi non soCodice PHP:
$sep = ".";
$vett = explode($sep,$text);
$ret = "";
foreach($vett as $el) {
$el = trim($el);
$el = ucfirst($el);
$ret .= $el . " ";
}
echo $ret;
![]()
"Se in un primo momento
l'idea non è assurda,
allora non c'è nessuna speranza
che si realizzi."
- Albert Einstein -
Non sono un esperto di espressioni regolari, ma sono certo che siano la strada giusta per questo problema.
Lo uppo anche se non ho una soluzione perchè penso che sia interessante per tutti.
anche io avevo pensato alle espressioni regolari..solo ce non sono mai riuscito a farmele entrare in testa (e le ho anche studiate all'uni)
cmq credo che con un preg_match andresti a cercare il punto lo spazio e la lettera che segue..che in fondo è la stessa cosa ma forse è un pò più bella
"Se in un primo momento
l'idea non è assurda,
allora non c'è nessuna speranza
che si realizzi."
- Albert Einstein -
Espressione regolare per rilevare il primo carattere minuscolo dopo un punto:
Usando preg_replace_callback() si può sostituire a risultati trovati dall'espressione regolare, l'esecuzione di una funzione:codice:\.\s*[a-z]
Per trasformare in maiuscola anche la prima lettera della stringa, è sufficiente modificare l'estpressione regolare aggiungendo con un or anche questa seconda casistica:Codice PHP:
$stringa="lorem ipsum dolor sit amet. consectetuer adipiscing elit. sed diam nonummy. nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";
print preg_replace_callback('/\\.\\s*[a-z]/', create_function('$matches','return strtoupper($matches[0]);'), $stringa);
Codice PHP:
$stringa="lorem ipsum dolor sit amet. consectetuer adipiscing elit. sed diam nonummy. nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.";
print preg_replace_callback('/\\.\\s*[a-z]|^\\s*[a-z]/', create_function('$matches','return strtoupper($matches[0]);'), $stringa);
Incollando ed inviando il codice erano rimasti tagliati alcuni \
Ho editato, dovrebbe essere a posto ora
@magicale
un piccolo chiarimento per chi come me non capisce nulla di regexp(non ho la possibilità di fare prove adesso):
strtoupper($matches[0])
esegue l'operazione su tutte le occorrenze o solo sulla prima che trova?
Su tutte. $matches[0] si riferisce alla corrispondenza del pattern completo.
($matches[1],$matches[2],..$matches[n] fanno invece riferimento al primo, secondo,..n-esimo sotto-pattern, ovvero porzioni dell'espressione regolare racchiuse tra due parentesi tonde)
E' come se fosse un preg_replace, in cui ad ogni occorrenza di un pattern sostituisci ad esempio un testo. Qui ogni occorrenza viene sostituita con l'esecuzione della funzione.