2010-09-13 6 views
5

Je sais que c'est une question très simple, mais je me demandais simplement s'il y avait a native php method to inject a string into another string. Ma réponse habituelle à une nouvelle manipulation de texte est de consulter les listes de fonctions de chaînes de manual. Mais je n'ai vu aucune méthode native pour insérer explicitement une chaîne dans une autre chaîne, alors j'ai pensé que je consulterais SO.Insérer une chaîne dans une chaîne avec un index

La réponse est probablement une sorte de combinaison des fonctions de chaîne native php OU simplement regex (qui fait saigner mon cerveau et mon cerveau fondre donc je l'évite).

EX: Prenez une chaîne comme some-image.jpg et injecter .big avant .jpg céder some-image.big.jpg

Répondre

8

You can do anything with regular expressions!

Pour votre demande spécifique, la solution serait:

$var = 'myimage.jpg'; 
$new_var = preg_replace('/\.jpg$/', '.big$0', $var); 

Je vous suggère de lire sur la façon d'écrire des expressions régulières, car ils peuvent être très utiles dans le développement (here's a starting point).

+0

lol se réfère au commentaire de saignement de l'oeil. Je ne suis pas opposé à l'utilisation de regex, juste l'écrire !!! haha. Bien que je sois tombé d'accord avec le fait que j'ai besoin d'arracher et de mieux apprendre. –

+1

haine de mon oeil pour regex de côté ... ceci est un superbe tutoriel sur regex - http://www.phpfreaks.com/tutorial/expressions-regular-part1---basic-syntax –

+0

@Derek http: // www. regular-expressions.info/tutorial.html si vous voulez mieux apprendre regex;) –

24

Vous pouvez utiliser substr_replace pour insérer une chaîne en remplaçant une sous-chaîne de longueur nulle avec votre insertion:

$string = "some-image.jpg"; 
$insertion = ".big"; 
$index = 10; 

$result = substr_replace($string, $insertion, $index, 0); 

A partir de la page de manuel (la description de la length (4) argument):

Si la longueur est égale à zéro, cette fonction aura pour effet d'insérer le remplacement dans la chaîne au début donné offset.

+0

Gah! Battu par secondes :( – erisco

+1

Beaucoup mieux répondre IMO.Utiliser une regex pour quelque chose d'aussi simple que cela est – Andy

+0

Cela suppose que nous connaissons l'index.Nous ne le faisons probablement pas ... oui, regex – CptAJ

Questions connexes