filtra le parole su una string in PHP

Ho una string in cui tutto l'inizio di each parola è in maiuscolo. Ora voglio filtrarlo come se fosse in grado di rilevare il link di parole "come, il, di, in, ecc." Sarà convertito in lettere minuscole. Ho un codice che lo sostituisce e lo converto in minuscolo, ma per 1 parola solo come di seguito:

$str = "This Is A Sample String Of Hello World"; $str = preg_replace('/\bOf\b/', 'of', $str); output: This Is A Sample String of Hello World 

Quindi quello che voglio è filtrare altre parole come nella string "is, a". È strano ripetere il preg_replace per each parola da filtrare.

Grazie!

Usa preg_replace_callback () :

 $str = "This Is A Sample String Of Hello World"; $str = ucfirst(preg_replace_callback( '/\b(Of|Is|A)\b/', create_function( '$matches', 'return strtolower($matches[0]);' ), $str )); echo $str; 

Visualizza "Questa è una string campione di Hello World".

Dato che conosci la parola e il formato esatti, dovresti usare str_replace piuttosto che preg_replace; è molto più veloce.

 $text = str_replace(arrays('Is','Of','A'),arrays('is','of','a'),$text); 

Prova questo:

 $words = arrays('Of', 'Is', 'A', 'The'); // Add more words here echo preg_replace_callback('/\b('.implode('|', $words).')\b/', function($m) { return strtolower($m[0]); }, $str); // This is a Sample String of Hello World