9
votes

Forme correcte d'article indéfini (A, AN) dans les chaînes PHP

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. xxx


2 commentaires

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é est la forme correcte même si le mot commence par un u . Même avec an ... dans beaucoup de cas, si la consonne est silencieuse et non parlée.


6 Réponses :


3
votes

Vous ne savez pas si cela fonctionne dans PHP de cette façon, mais une solution vraiment simple serait la suivante: xxx

(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)

Explication:

\ 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 suivi de la lettre capturée.


1 commentaires

Merci - égale première place avec m42.



6
votes

Essayez ceci: xxx

sortie: xxx


3 commentaires

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 ...



7
votes

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".

quand utiliser A / an:

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.

Par conséquent:

  • une université
  • une heure
  • une molécule Ytterbium
  • un chien jaune
  • un u
  • un m

    début d'une regex pour résoudre celui-ci xxx


4 commentaires

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/...



8
votes

Vérifiez cela, il a passé mes propres tests, semble assez solide.

https://github.com/kaivosukeltaja/php-definite-article


0 commentaires

0
votes

J'ai utilisé la réponse de Luke Chanver pour écrire un extrait de php rapide et méchant à gérer ce xxx


0 commentaires

1
votes

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


0 commentaires