exploser et implosent dans codeigniter
Données
3 uploads/8/thumbs/8470177001370850253.png
3 uploads/10/thumbs/967693821370850253.png
3 uploads/9/thumbs/8470177001370850253.png
3 uploads/11/thumbs/967693821370850253.png
mon entrée est id="20" maintenant, j'ai besoin de changer de façon statique comme "uploads/20/pouces/967693821370850253.png pour chaque id 3.
j'ai besoin d'une sortie comme ça..
3 uploads/20/thumbs/8470177001370850253.png
3 uploads/20/thumbs/967693821370850253.png
3 uploads/20/thumbs/8470177001370850253.png
3 uploads/20/thumbs/967693821370850253.png
j'ai essayé d'exploser et d'imploser, mais je ne peux pas le changer, comment faire? je vais récupérer les données à partir de la base de données.
mon codage est
function albums_download($input, $serviceName) {
$ipJson = json_encode($input);
$this->db->select('photo_thumb_url,photo_url');
$this->db->from('photos');
$this->db->where('album_id', $input['album_id']);
$query = $this->db->get();
$result = $query->result();
foreach ($query->result() as $row)
{
$data[] = $row->photo_thumb_url;
$data[] = $row->photo_url;
$explode_data = explode('/',$row->photo_thumb_url);
$explode_data[1] = 20;
$data['change'] = implode('/', $explode_data);
}
$status = $this->privue_lib->return_status('success', $serviceName, $data, $ipJson);
return $status;
}
- vous devrez donner plus de contexte pour cette question. vous pouvez dire à exploser quel délimiteur à utiliser explode('/',$filepath). Vous pouvez également regarder pathinfo() si vous essayez d'obtenir les noms de fichiers et de les ajouter à un autre chemin.
- Que signifie le "3" sur la gauche vient d'où ? Est-ce que ça doit être un tableau ?
Vous devez vous connecter pour publier un commentaire.
dire de vos données $data array
essayer cette
Je ne sais pas CodeIgniter, mais vous pouvez tout simplement utiliser une regex pour remplacer ceci:
De sortie:
démo
Explication de la regex:
^
- la chaîne DOIT commencer iciuploads/
- la chaîne littérale "uploads/"[0-9]+
- les chiffres entre 0 et 9 répété une ou plusieurs fois/
- la chaîne littérale "/"Nous sommes de le remplacer avec
uploads/{ID}/
.for every id 3
.essayez ceci, en supposant que les chemins sont tous les cohérentes.
ce sera le retour de
Vous pouvez utiliser simple regex
de sortie:
/[0-9]+/
cherche chiffres au moins 1 heure entre le /et le /et le remplace par/20/
foreach utilise des références sorte qu'il peut remplacer la valeur de la variable dans la boucle, puis l'imprimer avec print_rEdit:
Modifié pour fonctionner uniquement avec des chaînes de caractères qui commence par 3