2010-01-15 4 views
0

en guise d'avertissement J'ai une expérience très limitée avec PHP, avec un peu plus d'un mois d'apprentissage.obtenir un lien avec str_replace

J'ai un textform qui, lorsqu'il est soumis, passe par str_replaces sur les balises autorisées (par exemple [img]) pour les transformer en balises html. Ce que je veux faire est de récupérer les URL de la chaîne $ et ajouter des liens vers l'image originale et l'URL vers le redimensionné. Qu'est-ce que je demande essentiellement, je suppose, est comment puis-je récupérer des URL à partir d'une chaîne? afin que je puisse les utiliser pour ajouter des liens aux imgs redimensionnés.

<a href="linkToOriginal"><img src=""location/resize.php?file=', $string);` 

ce que je fais en ce moment est juste remplacer [img] avec balise img html qui est mis juste à côté de l'URL dans le champ de texte. $ chaîne étant le grand corps du texte.

$imageOpen = str_replace('[img]', '<img src="http://location/resize.php?file=', $string); 
    $imageClose = str_replace('[/img]', '"/></a>', $imageOpen); 

Si ce isnt clair s'il vous plaît dites-moi, car je suis assez horrible à expliquer les choses!

Répondre

2

Je pense que vous pourriez mieux utiliser quelques expressions régulières ici .. str_replace est limité à ce sujet. Lorsque vous utilisez des expressions régulières, vous pouvez ouvrir et fermer la balise en une seule fois avec la valeur souhaitée. Vous pouvez jeter un coup d'oeil à ceci par exemple:

// images 
$string = preg_replace("_\[img](.*)\[/img\]_si", '<img src="$1" alt="Image" />', $string); 
+0

J'ai peur de regex, mais je vais essayer d'utiliser ça! Merci d'avoir répondu – babyrats

1

Si c'est ce que vous voulez faire à chaque fois, vous devriez avoir 2 champs de texte: "Image Source" et "Link Location", ou quelque chose comme ça. Ensuite, vous n'avez pas à faire d'analyse, ce qui est notoirement difficile.

+0

Ceci est vrai mais n'est pas exactement ce que im après mais merci pour la réponse! – babyrats