2010-09-13 8 views
5

wiem, że jest to naprawdę proste pytanie, ale ja po prostu zastanawiasz się, czy istnieje a native php method to inject a string into another string. Moja zwykła reakcja na nową manipulację tekstem polega na zapoznaniu się z listą funkcji łańcuchowych manual. Ale nie widziałem żadnych natywnych metod do jawnego wstawiania ciągu znaków do innego ciągu, więc pomyślałem, że skonsultuję się z SO.Włóż ciąg na ciąg dany indeks

Odpowiedź jest prawdopodobnie rodzajem kombinacji funkcji rodzimego łańcucha php LUB po prostu regex (co powoduje, że krwawienie mojego oka i mój mózg topią się, więc unikam tego).

EX: Weźmy ciąg jak some-image.jpg i wstrzyknąć .big przed .jpg uzyskując some-image.big.jpg

Odpowiedz

8

You can do anything with regular expressions!

dla konkretnego wniosku, rozwiązaniem byłoby:

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

Sugerowałbym czytania na jak pisać wyrażenia regularne, ponieważ mogą one być bardzo przydatne w rozwoju (here's a starting point).

+0

lol odnoszą się do krwawiącego komentarza mojego oka. Nie jestem przeciwny używaniu regex, tylko go piszę !!! ha ha. Chociaż pogodziłem się z faktem, że muszę się podnieść i lepiej się uczyć. –

+1

nienawiść moje oko za regex bok ... to wspaniały tutorial regex - http://www.phpfreaks.com/tutorial/regular-expressions-part1---basic-syntax –

+0

@Derek http: // www. regular-expressions.info/tutorial.html, jeśli chcesz się lepiej nauczyć regex;) –

24

Można użyć substr_replace wstawić ciąg poprzez zastąpienie zerowej długości podciąg z Twoje wstawienie:

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

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

Od strony podręcznika (opisie (4.) argumentu length):

Jeżeli długość jest zerem wtedy funkcja ta będzie miała wpływ na wymianę łańcucha wstawiania na początku danego offsetu.

+0

Gah! Pobity przez sekundę :( – erisco

+1

Znacznie lepsza odpowiedź IMO.Korzystanie z wyrażenia regularnego dla czegoś tak prostego jak to jest przesadą – Andy

+0

Zakłada się, że znamy indeks. Prawdopodobnie nie ... więc tak, regex – CptAJ