2011-10-06 4 views
23

Tôi muốn định dạng chuỗi bằng sprintf nhưng lặp lại nhiều lần đối số. xem ..sprintf - đối số lặp lại

$str = "Str 1: %s - Str 2: %s - Str 2 again: %s"; 

Xem xét chuỗi đó có định dạng, tôi muốn lặp lại arg thứ hai hai lần.

echo sprintf($str, "I'm string 1", "My name is string 2"); 

Và kết quả mong muốn như:

Str 1: I'm string 1 - Str 2: My name is string 2 - Str 2 again: My name is string 2 

Có một cách để làm điều đó không ??

Trả lời

47

Đó là tất cả trong số documentation!

$str = 'Str 1: %1$s - Str 2: %2$s - Str 2 again: %2$s'; 
echo sprintf($str, "I'm string 1", "My name is string 2"); 

Lưu ý: Sử dụng dấu nháy đơn cho chuỗi định dạng nếu không bạn sẽ nhận được Thông báo PHP: biến Không xác định: s trong/path/to/tofile: dòng

Bạn cũng có thể thoát khỏi $ với a \ nếu bạn đang sử dụng dấu ngoặc kép.

+0

Lỗi của tôi, rõ ràng là trên tài liệu! Cảm ơn bạn. –