Preg_replace() remplacement partiel.

Fermé
Jaja - 7 déc. 2009 à 20:42
 Jaja - 8 déc. 2009 à 19:19
Bonjour,
j'ai un problème concernant un remplacement ou en tout cas concernant mon but.

Je recherche à enlever le "blabla." dans les chaines de type "blabla.domaine.com" .

L'action se résumerait donc à l'opération suivante :
(sous-domaine.domaine.ext) - (sous-domaine.) = domaine.ext

Inconnues pures: "sous-domaine", "domaine"
Inconnu partiel: "ext" ( les extensions de domaine sont connu )

J'ai bien sûr passer quelques heures dans le manuel en recherchant la fonction qui va bien et je n'ai trouvé que preg_replace() qui peut convenir quand le $replacement est sous une forme obscure pour moi avec des choses de la forme $n ou n représente la n-ième parenthèse fermante du $pattern. (selon le manuel).

J'ai essayé de nombreuses fois mais je n'y arrive pas , d'ailleurs je ne sais même pas si preg_replace() est la bonne fonction pour arriver à mon but mais je n'ai rien trouver d'autre.

Merci
A voir également:

2 réponses

varfendell Messages postés 3259 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 706
7 déc. 2009 à 21:22
Salut,

J'ai peut etre une proposition:
tu as sous-domaine.domaine.ext

Chacune des parties est séparé par un point...et dans les parties en question il n'y a pas de point (sous-domaine ne sera pas de la forme sdrvre.zerver.erv) Donc tu peut faire une regexp qui te sélectionne juste le sous domaine et tu ne la remplace par rien.

sa donnerais un truc du genre:
$patterns = '*.';
$replacements = '';
$string = 'sous-domaine.domaine.ext';
preg_replace($patterns, $replacements, $string)

le truc a vérifier c'est que *. sélectionne bien 'sous-domaine.' et pas 'sous-domaine.domaine.' qui pourrait aussi être une possibilité.

0
$domain = gethostbyaddr($myIP);
$pattern ='<^.*\.(.*\..*)$>i';       
preg_match($pattern, $domain, $match);
echo $match['1'];


Voilà merci
0

Discussions similaires