2012-01-03 37 views
8

Không chắc chắn làm thế nào để từ câu hỏi này nhưng tôi sẽ đưa ra một ví dụ. $ string = 'Xin chào, $ name. Bạn khỏe không?'; Khi tôi đăng chuỗi này, $ name không thay đổi. Làm thế nào tôi có thể làm cho nó để tôi có thể đặt một cái gì đó như + tên + để nó thay đổi tên. Tôi đã cố gắng tìm kiếm nó nhưng tôi không biết phải tìm kiếm gì nên tôi không có may mắn. nó có thể thực sự đơn giản nhưng tôi chỉ là trống. Cảm ơncách thay thế trình giữ chỗ trong chuỗi?

+0

Cú pháp PHP cơ bản: http://php.net/manual/en/language.types.string.php –

Trả lời

15

Bạn có thể sử dụng trình giữ chỗ và str_replace. Hoặc sử dụng tích hợp sẵn sprintf của PHP và sử dụng %s. (Và v4.0.6 bạn có thể hoán đổi thứ tự các đối số nếu bạn muốn).

$name = 'Alica'; 

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

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

Và, cho bất cứ ai tự hỏi, tôi hiểu rằng là rắc rối templating một chuỗi, không PHP tích hợp nối/phân tích cú pháp. Tôi chỉ giả giữ câu trả lời này lên mặc dù như tôi vẫn không chắc chắn 100% ý định của OP này

+0

thats những gì tôi đang tìm kiếm, str_replace(); Cảm ơn. Tôi không thể cho cuộc sống của tôi con số nó ra. –

+0

@Alica: Không thành vấn đề. Và nếu câu trả lời này hữu ích, hãy đảm bảo chấp nhận câu trả lời đó (như với các câu hỏi khác mà bạn đã hỏi).). –

+0

'Và v4.0.6 ...' Tôi hy vọng bạn không đề cập đến điều đó bởi vì bạn nghĩ mọi người đang sử dụng thứ gì đó thấp hơn PHP 4;) –

6

Bạn nên gói chuỗi trong dấu ngoặc kép (") nếu bạn muốn biến để được mở rộng:

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

See the documentation.

+0

Sạch sẽ và đơn giản, tuyệt vời. –

0

Một giải pháp thứ ba, không có tốt hơn hoặc tồi tệ hơn kể trên, là nối:

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

5

tôi luôn là người hâm mộ của strtr.

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

Ưu điểm khác cho điều này là bạn có thể xác định các loại tiền tố giữ chỗ khác nhau. Đây là cách Drupal làm điều đó; @ cho biết một chuỗi được thoát ra là an toàn để xuất ra một trang web (để tránh các cuộc tấn công tiêm). Các vòng lặp lệnh format_string trên các tham số của bạn (chẳng hạn như @name@weather) và nếu ký tự đầu tiên là @, thì nó sử dụng check_plain trên giá trị.

+1

Đây là một câu trả lời hay vì nó cũng tránh được một số cạm bẫy mà str_replace gặp phải: http://php.net/manual/en/function.strtr. php # 117169 –

Các vấn đề liên quan