-1
votes

Regex les 3 premières lettres qui sont d'une certaine manière à quelque chose

J'ai un tas de liens qui ressemblent à ceci ci-dessous xxx

Je veux remplacer les occurrences de / en quelque chose comme / fr-gb (/ fr- $ pays) et le mot GB est dans une variable $ Pays.

Le résultat final serait par exemple xxx


0 commentaires

4 Réponses :


2
votes

Vous pouvez le faire avec Str_replace facilement:

^        look at the begin of the string
\/       look for an / (\ is for escaping)
[a-z]{2} look for two characters a-z 


6 commentaires

mais le mot fr pourrait être ch, CN ou un mot de 2 lettres


Puis remplacez EN avec une variable.


statique ou d'une variable?


statique pas une variable


Vous remplacerez ce modèle non seulement au début, mais également dans la chaîne.


Je suppose que la conception de l'URL est de lui-même .. SO / EN / NE PAS arriver deux fois



0
votes

Vous pouvez utiliser Preg_replace Code> . Pour faire correspondre uniquement le motif au début, utilisez la regex suivante: xxx pré>

si vous souhaitez correspondre à toutes les deux chaînes de caractères (avec des caractères WordIquiLes), vous pouvez utiliser: P>

^\/(\w{2})\/


1 commentaires

mais le mot fr peut être ch, CN ou un mot de 2 lettres



2
votes

Probablement mieux utiliser Preg_replace ici parce que nous examinons le début de la chaîne ici.

$string = preg_replace("/^(\/?)([a-z]{2})/", "$1$2-".$country, $string);


1 commentaires

Pourquoi tant de groupes? Utilisez Preg_replace ('~ ^ /? [A-Z] {2} ~', '$ 0 -'. $ Country, $ string)



0
votes

$ Orig code> peut être une chaîne ou une gamme de chaînes. Cela le remplacera n'importe où dans la chaîne, pas seulement au début: xxx pré>

Si vous devez remplacer uniquement au début: p>

$orig = preg_replace("#^/$lang#", "/$lang-$country", $orig);


0 commentaires