2010-12-12 43 views
7

Tôi có một biến PHP trông một chút như thế này:Thay thế lượng x số cuối cùng

$id = "01922312"; 

tôi cần phải thay thế hai hoặc ba số cuối cùng với một nhân vật khác. Làm thế nào tôi nên đi về việc này?

Cảm ơn rất nhiều trước!

EDIT Xin lỗi vì sự nhầm lẫn, về cơ bản tôi có biến trên, và sau khi tôi đang thực hiện chế biến nó tôi muốn nó giống như thế này:

$new = "01922xxx"; 

Xin lỗi một lần nữa!

EDIT2 D'oh! Typo với dấu ngoặc kép. Lấy làm tiếc!

+2

Lọc câu hỏi của bạn. "Thay thế hai hoặc ba số cuối cùng bằng một ký tự khác" có nghĩa là gì? – dkamins

+0

Giá trị đó không hợp lệ. Cung cấp cho chúng tôi thông tin hữu ích. –

+0

"Thay số bằng ký tự" ...? – KingCrunch

Trả lời

22

Hãy thử điều này:

$new = substr($id, 0, -3) . 'xxx'; 

Kết quả:

01922xxx
2
function replaceCharsInNumber($num, $chars) { 
    return substr((string) $num, 0, -strlen($chars)) . $chars; 
} 

Cách sử dụng:

$number = 5069695; 
echo replaceCharsInNumber($number, 'xxx'); //5069xxx 

Nhìn thấy nó trong hành động ở đây: http://codepad.org/XGyVQ1hk

+1

Cẩn thận chuyển đổi một cách rõ ràng thành chuỗi.Nếu giá trị được nhập dưới dạng bát phân và đầu ra cũng được mong đợi là bát phân thì điều này sẽ không làm như mong muốn. –

+0

Xin chào, điều codepad.org khá thú vị. Bookmarked :) – Jonah

11

Bạn có thể sử dụng substr_replace để thay thế chuỗi con.

$id = substr_replace($id, 'xxx', -3); 

tham khảo:

http://php.net/substr-replace

+1

+1 cho substr_replace - có vẻ như là một cách tốt để làm điều đó. –

2

Strings có thể được coi như mảng, với các nhân vật là các phím:

$id = 1922312; // PHP converts 01922312 => 1 because of that leading zero. Either make it a string or remove the zero. 
$id_str = strval($id); 

for ($i = 0; $i < count($id_str); $i++) 
{ 
    print($id_str[$i]); 
} 

này nên đầu ra số ban đầu của bạn. Bây giờ để làm việc với nó, coi nó như một mảng bình thường:

$id_str[count($id_str) - 1] = 'x'; 
$id_str[count($id_str) - 2] = 'y'; 
$id_str[count($id_str) - 3] = 'z'; 

Hy vọng điều này sẽ giúp!

+0

'strval (01922312)' là '1' (không phải lỗi của bạn; nó sai trong câu hỏi); có thể muốn bỏ hàng đầu '0' để làm cho nó rõ ràng. – scoates

+0

Hmm, còn về '(string) $ id_str' thì sao? Tôi sẽ kiểm tra ... – Blender

+0

Không. Tôi đoán bạn không thể có được xung quanh nó, như PHP chuyển đổi nó để '1' automagically! – Blender

1

Chỉ cần chuyển sang chuỗi và thay thế ...

$stringId = $id . ''; 
$stringId = substr($id, 0, -2) . 'XX'; 
Các vấn đề liên quan