Preg_replace() supprimer toute une partie d'une chaine
Dernière réponse : dans Programmation
Bonjour,
quelqu'un pourrait il me dire comment écrire la bonne syntaxe pour supprimer toute une partie d'une chaine renvoyée par une variable...
merci pour voitre aide précieuse ...
j'ai une variable : $toto
qui me renvoie soit la chaine:
'nom_du_dossier/test.jpg' soit 'nom_du_dossier/test.gif'
et il faut que je puisse afficher juste le mot : 'test'
j'arrive a afficher 'file/test' en faisant:
$in = array();
$in[0] = '/.jpg/';
$in[1] = '/.gif/';
$out = array();
$out[1] = '';
$out[0] = '';
echo preg_replace($in, $out, $toto) ;
mais je connais pas la syntaxe ou autre fonction qui me permettrait de supprimer l'ensemble des caractères (nom du dossier) compris avant le '/' dans ma chaine
je cherche a n'afficher que le nom de la photo sans son extension ni son chemin d'accès....
Si vous avez des pistes ... je cherche mais je suis débutant 1er niveau et pas facile pour moi
merci
marie
quelqu'un pourrait il me dire comment écrire la bonne syntaxe pour supprimer toute une partie d'une chaine renvoyée par une variable...
merci pour voitre aide précieuse ...
j'ai une variable : $toto
qui me renvoie soit la chaine:
'nom_du_dossier/test.jpg' soit 'nom_du_dossier/test.gif'
et il faut que je puisse afficher juste le mot : 'test'
j'arrive a afficher 'file/test' en faisant:
Citation :
$in = array();
$in[0] = '/.jpg/';
$in[1] = '/.gif/';
$out = array();
$out[1] = '';
$out[0] = '';
echo preg_replace($in, $out, $toto) ;
mais je connais pas la syntaxe ou autre fonction qui me permettrait de supprimer l'ensemble des caractères (nom du dossier) compris avant le '/' dans ma chaine
je cherche a n'afficher que le nom de la photo sans son extension ni son chemin d'accès....
Si vous avez des pistes ... je cherche mais je suis débutant 1er niveau et pas facile pour moi
merci
marie
Autres pages sur : preg replace supprimer partie chaine
Lassé par la pub ? Créez un compte
Mouais ... Pour récupérer le nom d'un fichier à partir du Path complet il y a basename qui est fait pour, ex:
Plus simple quand même ...
<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>
Plus simple quand même ...
RedSux a dit :
Plus simple quand même ...D'ou mon "tout dépend de comment et pourquoi tu utilises ton script"
J'ai répondu à la question initiale en sachant très bien que d'autres solutions existent et sont peut-être préférables.
Mais d'expérience, je sais aussi qu'il vaut mieux ne pas embrouiller le demandeur, d'abord lui répondre puis lui proposer autre chose si l'on pense que c'est plus adapté.
Merci a vous 2....
puisque voua avez l'air dispo a donner un coup de main et qui plus est le plus approprié ,
si je peux me permettre de vous solliciter un peu plus pour :
l'idée est donc d'afficher en légende de photo le nom du fichier photo sans son extension ni son chemin d'acces et en remplaçant les "-" par un espace vide
ainsi ma photo ..../.../imgs/nom_repertoire/vu-de-coté.jpg
devra afficher comme légende:
vu de coté
Dans mon cas précis , ma variable image $value , me renvoie le nom du fichier image avec le nom de son répertoire uniquement soit nom_répertoire/nom_fichier
Avec le bout de code de Crazy... ok nikel je renvoie bien le nom de fichier uniquement ; mais a présent il faudrait que je refiltre pour remplacer les éventuels '-' du nom du fichier par des espaces
preg_replace() est il adapté ?
pourriez vous me dire comment agencé correctement dans la fonction
j'ai fait qqs bidouillage mais je ne renvoie rien ... hummm.... c'est pas trop mon truc ....
Merci pour le temps que vous m'accordez
Marie
puisque voua avez l'air dispo a donner un coup de main et qui plus est le plus approprié ,
si je peux me permettre de vous solliciter un peu plus pour :
l'idée est donc d'afficher en légende de photo le nom du fichier photo sans son extension ni son chemin d'acces et en remplaçant les "-" par un espace vide
ainsi ma photo ..../.../imgs/nom_repertoire/vu-de-coté.jpg
devra afficher comme légende:
vu de coté
Dans mon cas précis , ma variable image $value , me renvoie le nom du fichier image avec le nom de son répertoire uniquement soit nom_répertoire/nom_fichier
Avec le bout de code de Crazy... ok nikel je renvoie bien le nom de fichier uniquement ; mais a présent il faudrait que je refiltre pour remplacer les éventuels '-' du nom du fichier par des espaces
preg_replace() est il adapté ?
pourriez vous me dire comment agencé correctement dans la fonction
j'ai fait qqs bidouillage mais je ne renvoie rien ... hummm.... c'est pas trop mon truc ....
Merci pour le temps que vous m'accordez
Marie
Si c'est pour n'avoir que le nom du fichier et remplacer les éventuels tirets par des espaces, ce sera trop gourmand pour pas grand chose.
Je pars du principe qu'il s'agit d'images (3 formats possibles: gif, jpg, png), placées quelque part dans l'arborescence et que tu peux avoir des "-" ou des "_" qui remplacent les espaces.
Tu pourrais donc faire:
Autant que possible, si on peut se passer facilement des expressions régulières, il vaut mieux le faire car elles consomment bien plus de CPU que des modifications simples sur une chaîne.
Je pars du principe qu'il s'agit d'images (3 formats possibles: gif, jpg, png), placées quelque part dans l'arborescence et que tu peux avoir des "-" ou des "_" qui remplacent les espaces.
Tu pourrais donc faire:
<?php
$image = "/chemin/vers/ton/image.gif";
# on récupère les infos sur le fichier
$info = pathinfo($image);
# on récupère le nom sans l'extension
$desc = basename($image, $info['extension']);
# on remplace les - et _ par un espace
$desc = str_replace(array('-', '_'), '', $desc);
echo $desc;
?>
Autant que possible, si on peut se passer facilement des expressions régulières, il vaut mieux le faire car elles consomment bien plus de CPU que des modifications simples sur une chaîne.
merci tout d'abord .......
ceci dit pourrais je avoir un brin d'info supp ...
en 5 et 6 de ton dernier code , on recupere le nom sans l'extension...
$desc = basename($image, $info['extension']);
'extension' dans $info['extension'] est a remplacer par les types d'extensions possible ?
déolé j'ai l'impression de me transformer en boulet
mais le code tel que donné plus bas ne renvoie rien chez moi
en cherchant un peu le pathinfo($image) ne renvoie rien non plus ...
si vous avez encore un peu de courage pour moi
ceci dit pourrais je avoir un brin d'info supp ...
en 5 et 6 de ton dernier code , on recupere le nom sans l'extension...
$desc = basename($image, $info['extension']);
'extension' dans $info['extension'] est a remplacer par les types d'extensions possible ?
déolé j'ai l'impression de me transformer en boulet
mais le code tel que donné plus bas ne renvoie rien chez moi
en cherchant un peu le pathinfo($image) ne renvoie rien non plus ...
si vous avez encore un peu de courage pour moi
Ok, il est possible que pathinfo() échoue à cause du chemin relatif.
Je vais donc reprendre avec le code "simple", puis après expliquer ce que devait faire l'autre version
Le second code que je t'ai donné utilise pathinfo() pour récupérer différentes informations sur le fichier et les mettre dans un tableau.
Et l'un des éléments de ce tableau est 'extension' qui contient l'extension de ce fichier.
Je vais donc reprendre avec le code "simple", puis après expliquer ce que devait faire l'autre version
$pattern = '![^\/]+\/([^\.]+)\.[a-z]{3}$!i';
preg_replace($pattern, '$1', $toto);
echo str_replace(array('-', '_'), '',$toto);
Le second code que je t'ai donné utilise pathinfo() pour récupérer différentes informations sur le fichier et les mettre dans un tableau.
Et l'un des éléments de ce tableau est 'extension' qui contient l'extension de ce fichier.
Merci Crazy
j'en sors enfin
alors j'ai ajouté une étape car sur le dernier code , il continuait de me renvoyer le chemin du repertoire et extensions, mais me retirait bien les "-" et "_"
je suis parti sur :
$pattern = '![^\/]+\/([^\.]+)\.[a-z]{3}$!i';
$value = preg_replace($pattern, '$1', $toto);
echo str_replace(array('-', '_'), ' ',$value) ;
la ca roule (bon reste que je ne saisis pas pourquoi c a passe pas direct comme tu l'avais sugerré) ...
merci mille fois pour m'avoir aidé
j'en sors enfin
alors j'ai ajouté une étape car sur le dernier code , il continuait de me renvoyer le chemin du repertoire et extensions, mais me retirait bien les "-" et "_"
je suis parti sur :
$pattern = '![^\/]+\/([^\.]+)\.[a-z]{3}$!i';
$value = preg_replace($pattern, '$1', $toto);
echo str_replace(array('-', '_'), ' ',$value) ;
la ca roule (bon reste que je ne saisis pas pourquoi c a passe pas direct comme tu l'avais sugerré) ...
merci mille fois pour m'avoir aidé
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumComment supprimer une partie d'une video
- ForumExcel supprimer une partie d'une cellule
- ForumComment supprimer une partie d'une chanson
- ForumVim remplacer chaine dans une partie
- ForumRecuperer une partie de chaine php
- ForumJava recuperer partie chaine
- ForumSupprimer une partie de film
- ForumComment supprimer une partie de video
- ForumSupprimer partie pokemon diamant
- ForumSupprimer partie film
- Voir plus