2012-01-03 15 views
8

Nie jestem pewien, jak wyrazić to pytanie, ale dam przykład. $ string = 'Hej, $ imię. Jak się masz?'; Kiedy zamieszczam ten ciąg, nazwa $ nie zmienia się. Jak mogę to zrobić, abym mógł umieścić coś w stylu + nazwa +, aby zmienić nazwę. Próbowałem wyszukiwać, ale nie wiem, czego szukać, więc nie mam szczęścia. to jest naprawdę proste, ale po prostu gaśnie. Dziękijak zamienić symbol zastępczy w łańcuch?

+0

Podstawowa składnia PHP: http://php.net/manual/en/language.types.string.php –

Odpowiedz

15

Możesz używać posiadaczy miejsc i str_replace. Lub użyj wbudowanego PHP sprintf i użyj %s. (I od wersji 4.0.6 możesz zamienić kolejność argumentów, jeśli chcesz).

$name = 'Alica'; 

// sprintf method: 
$format = 'Hello, %s!'; 
echo sprintf($format, $name); // Hello, Alica! 

// replace method: 
$format = "Hello, {NAME}!"; 
echo str_replace("{NAME}", $name, $format); 

I dla każdego, zastanawiając się, zrozumiałem, że jest kłopot templating ciąg, nie PHP zintegrowany konkatenacji/parsowania. Ja po prostu zakładamy utrzymanie takiej odpowiedzi się chociaż jak nadal nie jestem w 100% pewien intencji tego OP

+0

to, czego szukałem, str_replace(); Dzięki. Nie mogłem tego do końca zrozumieć. –

+0

@Alica: Nie ma problemu. A jeśli ta odpowiedź była pomocna, upewnij się, że ją akceptujesz (tak jak w przypadku innych zadawanych pytań. Zatwierdzenie poprzednich odpowiedzi nie tylko daje kredyt osobie, ale czyni ją zasobem dla przyszłych użytkowników, a także sprawia, że ​​inni chcą Ci pomóc.). –

+0

'A od wersji 4.0.6 ...' Mam nadzieję, że nie wspomniałeś o tym, ponieważ uważasz, że ludzie używają czegoś niższego niż PHP 4;) –

6

powinien być zawijania ciąg w cudzysłowach (") Jeśli chcesz zmienne zostać rozszerzona:

$name = "Alica"; 
$string = "Hey, $name. How are you?"; // Hey, Alica. How are you? 

See the documentation.

+0

Czysto i prosto, świetnie. –

0

Trzecie rozwiązanie, nie lepsze ani gorsze niż wyżej wymienione, to powiązanie:

echo 'Hello '. $name .'!!!';

5

I zawsze był fanem strtr.

$ php -r 'echo strtr("Hi @name. The weather is @weather.", ["@name" => "Nick", "@weather" => "Sunny"]);' 
Hi Nick. The weather is Sunny. 

Kolejną zaletą jest możliwość zdefiniowania różnych typów prefiksów symboli zastępczych. Tak robi Drupal; @ wskazuje ciąg znaków, który ma być unikany jako bezpieczny do wyprowadzenia na stronę internetową (aby uniknąć ataków wtrysku). Polecenie format_string zapętla nad Twoimi parametrami (takimi jak @name i @weather), a jeśli pierwszy znak to @, to użyje on wartości check_plain.

+1

To jest dobra odpowiedź, ponieważ pozwala też uniknąć pułapek na spotkaniach str_replace: http://php.net/manual/en/function.strtr. php # 117169 –

Powiązane problemy