Y a-t-il un moyen facile de remplacer A / an dans une chaîne pour être d'accord avec le mot suivant - beaucoup de la même manière que le format de la manière du format de date?
E.g. p>
6 Réponses :
Vous ne savez pas si cela fonctionne dans PHP de cette façon, mais une solution vraiment simple serait la suivante: (pas sûr de la règle A / une, comme il n'y a pas de règle en allemand et je utilisez généralement celui qui sonne mieux) p> Explication: p> \ b est une limite de mot, donc \ BA \ B cherche le mot A, suivi d'un espace et d'un de lettres [aeiou]. La lettre est capturée à 1 $ et l'expression est remplacée par an code> suivi de la lettre capturée. P> p>
Merci - égale première place avec m42.
Essayez ceci: sortie: p>
nécessaire d'utiliser [aeiouaeiou] car il s'agit d'un titre où les mots importants sont capitalisés. Merci.
Droite, j'ai ajouté les lettres majuscules.
Une université a passé une heure à rechercher une réponse afin de trouver des choses qui ne va pas avec elle ...
Vous pouvez utiliser une expression régulière pour échanger l'A / et en fonction de ce qui le suit. La partie plus délicieuse définira réellement tous les cas sur lesquels échanger - il est plus compliqué que "si c'est suivi d'une voyelle".
Utilisez A avant les mots / abréviations qui commencent par un son de consonnes; Utilisez un avant les mots / abréviations qui commencent par un son de voyelles. Ceci est basé sur la prononciation, pas l'orthographe. P> Par conséquent: p>
la regex est fausse. Il affirme commencer dans la position d'un A.
Bah, mon point était la langue plutôt que la regex / la fonction utilisée, qui est assez simple. Faire un échange de base en fonction de la question de savoir si 'A' est suivi d'une voyelle n'est tout simplement pas la forme correcte d'un article indéfini.
Vous avez fait des points intéressants. L'utilisation commune est la clé de cela. Un hôtel est correct, mais l'utilisation et la prononciation réelles dépend de l'endroit où dans le pays (Angleterre), vous venez, entre autres. Par conséquent, un hôtel est également correct. Faire d'autres distinctions, par exemple Une université, un parapluie n'est pas facile à faire algorithmique.
Je cherchais à ce problème récemment et est venu à la même difficulté avec la prononciation: codereview.stackexchange.com/questions/19085/...
Vérifiez cela, il a passé mes propres tests, semble assez solide. P>
J'ai utilisé la réponse de Luke Chanver pour écrire un extrait de php rapide et méchant à gérer ce
J'ai fourbé le module Luke Chanvers désigne, le nettoyant, fixant une erreur logique et la rendant intégrable en utilisant Compositeur a>; Avec celle installée, vous pouvez le tirer dans votre projet avec: php composer.phar require thaumatic/indefinite-article
Cela ressemble à un preg_replace à l'aide d'une expression régulière conditionnelle. Voir: régulier-expressions.info/lookaround.html
Cela ne peut jamais travailler complètement :) L'anglais ici a trop de pièges. Par exemple.
Une université code> est la forme correcte même si le mot commence par un
u code>. Même avec
an ... code> dans beaucoup de cas, si la consonne est silencieuse et non parlée.