PDA

View Full Version : کاراکتر BackSpace



arvant
سه شنبه 12 شهریور 1392, 13:04 عصر
سلام چطوری می تونم توی یه رشته کاراکتر Backspase رو به صورتی قرار دهم که به تعداد خاصی از کاراکتر های ماقبل رو پاک کند؟
مثال
$in="string";
echo"test".$in;

با قرار دادن چهارتا کاراکتر در ابتدای رشته string مانع از چاپ کلمه test بشوم.
فقط به همین صورت امکان استفاده از تابع یا چیزی شبیه این وجود ندارد تنها دسترسی من به رشته string است.

MMSHFE
سه شنبه 12 شهریور 1392, 13:33 عصر
دوست گرامی، کدهایی مثل Backspace و Delete و Escape و... در جدول ASCII اصطلاحاً به کارکترهای Non-Printable معروف هستن یعنی نمیتونید اونها رو به توابعی که خروجی برای دستگاههای خروجی مثل مانیتور و چاپگر و... میفرستن، ارسال کنید و فقط میتونید از دستگاههای ورودی دریافتشون کنید. برای مثال کد زیر رو درنظر بگیرین:


$in = chr(8) . chr(8) . chr(8) . chr(8) . 'string';
echo 'test' . $in;
// Output: teststring

این کد قاعدتاً باید هدف موردنظر شما رو انجام بده چون کد ASCII برابر با 8 معادل کد Backspace هست (منبع (http://www.asciitable.com/)). ولی میبینید که در خروجی عبارت teststring چاپ میشه چون دستگاههای خروجی فقط کارکترهای Printable رو قبول میکنن.
موفق باشید.

arvant
سه شنبه 12 شهریور 1392, 16:16 عصر
خب اینکه بغیر از پرینت کردن هم کار نمی کنه
شما این طوری تصور کن که مثلا 'test' . $in' رو به عنوان ورودی یک تابع بفرستیم ولی باز رشته ای که به تابع فرستاده میشه همونteststring هست.
یعنی هیچ راهی نداره که بشه یه همچین کاری رو بدون تابع و فقط از طریق کدهای سترینگ انجام داد؟

MMSHFE
سه شنبه 12 شهریور 1392, 16:37 عصر
خیر چنین راهی وجود نداره دلیلش اینه که این کدها (Backspace و...) کدهای کنترلی هستن نه عملیاتی. یعنی میتونید بگین فلان کارکتر که کاربر وارد کرده برابر با این کد هست یا نه؟ ولی توی عبارتها بعنوان یک مقدار نمیتونید ازش استفاده کنید و عملگرهایی مثل . و... رو روی اونها اعمال کنید.