2010-03-27 7 views
0

Question de PHP débutant.Comment extraire des sous-chaînes avec PHP

Je dois conserver les chemins d'image comme suit dans la base de données pour le backend d'administration.

../../../../assets/images/subfolder/myimage.jpg 

Cependant, j'ai besoin de chemins d'image comme suit pour le frontal.

assets/images/subfolder/myimage.jpg 

Quelle est la meilleure façon de changer cela par PHP?

J'ai pensé à substr(), mais je me demande s'il existe de meilleurs moyens.

Merci d'avance.

+2

Pouvez-vous être plus précis sur la structure du répertoire? Qu'est-ce qui va transformer «../../../../ actifs» en «actifs»? Quels sont vos répertoires racine et base? Ou cherchez-vous simplement à remplacer ces valeurs exactes? Pour cela, il y a str_replace(): http://www.php.net/str_replace sinon, je pense que nous avons besoin de plus d'infos. –

+0

Pourquoi avez-vous besoin de chemins différents pour le backend et le frontend? Pourquoi n'utilisez-vous pas un seul chemin et l'ajustez avec un préfixe? – Gumbo

Répondre

0

vous devez enregistrer votre chemin d'image dans une variable d'application et peut accéder à la fois admin et frontend

0

Si ../../../../ est fixé, alors substr fonctionnera. Sinon, essayez quelque chose comme ceci:

newpath=substr(strpos(path, "assets")); 
0

Il peut sembler un choix étrange au début, mais vous pouvez utiliser ltrim. Dans l'exemple suivant, tous les ../ seront supprimés au début de $path. Les points du second argument doivent être échappés car PHP les traiterait comme une plage sinon.

$path = ltrim('../../../../assets/images/subfolder/myimage.jpg', '\\.\\./'); 

$path sera alors:

assets/images/subfolder/myimage.jpg 
+0

Notez que le deuxième paramètre de 'ltrim' indique une * liste * de caractères qui doivent être supprimés. – Gumbo

0

Je propose cette

$path = "../../../../assets/images/subfolder/myimage.jpg"; 
$root = "../../../../"; 

$root_len = strlen($root); 

if(substr($path, 0, $root_len) == $root){ 
    echo substr($path, $root_len); 
} else { 
    //not comparable 
} 

De cette façon, vous avez une sorte de contrôle sur lequel le répertoire à considérer en tant que root pour vos images

Questions connexes