2011-08-01 3 views
0

Voici ce que j'essaie de faire. J'ai des titres aux pages. Je suis en train de tirer la dernière lettre du premier mot dans chaque chaîneUne autre question de capitalisation

Exemples:

BONJOUR

BONJOUR comment allez-vous

Je peux obtenir de travailler avec un seul mot, mais je Je n'arrive pas à comprendre comment le faire s'il y a plus d'un mot. Toute aide est la bienvenue!!

Merci beaucoup!

+0

pourquoi oh pourquoi, c'est la grammaire normale. –

+0

Essayez de nous montrer le code que vous avez actuellement. – Matt

Répondre

1

essayer

<?php 

    $title     = "Hello World"; 
    list($firstword, $rest) = explode(" ", $title, 2); 
    $firstword    = strrev(ucfirst(strrev($firstword))); 
    $title     = $firstword . " " . $rest; 

    print $title; 

Si vous souhaitez en savoir plus sur toutes les fonctions voir explode, strrev, list, ucfirst

+0

wow vous les gars sont rapides! Je vous remercie!! – Kathy

+0

vous êtes les bienvenus :) –

+0

Ils sont rapides pour obtenir la réputation, Kathy. –

1

Puisque vous savez la manière dont cela fonctionne avec 1 mot, il vous suffit de obtenir le premier mot et ensuite mettre votre algorithme.

  1. Essayez preg_replace_callback avec "/^(\w+)/"
  2. Remplacer le dernier caractère dans la méthode de rappel.

preg_replace_callback: http://php.net/manual/en/function.preg-replace-callback.php

MISE À JOUR - Code de travail:

$string = "This is a test"; 
$string = preg_replace_callback(
     '/^(\w+)/', 
     create_function(
      '$matches', 
      'return yourUCLastAlgorithm($matches[0]);' 
     ), 
     $string 
    ); 
echo $string; 

MAJ2 - en utilisant preg_replace avec modificateur e:

$string = "This is a test"; 
$string = preg_replace(
     '/^(\w+)/e', 
     'yourUCLastAlgorithm("$1")', 
     $string 
    ); 
echo $string; 
+0

Ne pensez-vous pas que les expressions régulières avec les fonctions lamda sont un peu exagérées ici, quand vous pouvez le faire avec des fonctions génériques? –

+0

Avoir une autre idée: utiliser preg_replace avec le modificateur e. –

+0

En général, j'essaie toujours d'utiliser des expressions rationnelles sur des solutions de fractionnement personnalisées. –

-1

Essayez ceci:

$string = preg_replace('/^([ ]+)?([^ ]*)([a-z])?(.*)?$/i', "$1.$2.strtoupper($3).$4", $string); 
+0

Pourquoi utiliser une expression régulière si elle n'est pas nécessaire? C'est trop cher –

+0

Parce que c'était la première pensée ^^ ' –

+0

'C'est un test' =>' .Ce.strtoupper(). est un test' Veuillez vérifier avant de poster. –