Je dois extraire le nom de fichier " HomeModel " d'une chaîne app \ model \ common \ HomeModel . C'est ce que j'ai essayé

Tout d'abord, remplacez «\» par «/» en utilisant str_replace.

$model = 'app\model\common\HomeModel';
$file = str_replace("\\", '/', $model) . ".php";
echo $file;

Le résultat

app/model/common/HomeModel.php

Alors j'explose le résultat comme ça

$model = 'app\model\common\HomeModel';
$file = str_replace("\\", '/', $model) . ".php";
echo $file;

$result = explode("/", $file);
echo '<br>';
var_dump($result);

Et puis c'est ce que j'ai

array (size=4)
  0 => string 'app' (length=3)
  1 => string 'model' (length=5)
  2 => string 'common' (length=6)
  3 => string 'HomeModel.php' (length=18)

Maintenant, comment puis-je obtenir la dernière valeur «HomeModel» de ce tableau pour une utilisation ultérieure?, Je dois attribuer la valeur «HomeModel» à $ class.

php
0
Mecom 16 nov. 2017 à 14:25

5 réponses

Meilleure réponse

end() devrait faire le travail.

$class = end($result);
5
MCMXCII 16 nov. 2017 à 11:30

Vous pouvez essayer cette approche:

<?php

$model = 'app\model\common\HomeModel';

$fileName = substr(str_replace("\\", '/',$model), strrpos(str_replace("\\", '/',$model),'/') + 1).'.php';

echo $fileName;
0
aslawin 16 nov. 2017 à 11:42

Essaye celui-là,

$class = $result[count($result)-1];
0
Mohammed Alhanafi 16 nov. 2017 à 11:33

Bien que end() soit la réponse à cette question spécifique, j'encourage les autres membres à essayer une meilleure approche concernant le cas de la rupture d'un chemin vers ses parties en utilisant la fonction php pathinfo().

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['basename']; // since PHP 5.2.0. Output: lib.inc.php

Dans votre exemple, utilisez simplement le premier str_replace pour que ce soit un chemin valide et ajoutez manuellement l'extension php à la chaîne.

2
Ofir Baruch 16 nov. 2017 à 11:33

Vous pouvez utiliser la fonction pathinfo

$file = str_replace("\\", '/', $model) . ".php";
echo pathinfo($file)['filename']; // HomeModel
2
splash58 16 nov. 2017 à 11:32
47328446