امیـرحسین
شنبه 24 دی 1390, 18:33 عصر
سلام
من یک String دارم شامل کاراکترهای مختلف. حالا میخوام فقط حروف لاتینش رو بگیرم و فقط اونهایی که با بکاسلش Escape نشدهاند. یعنی در کد زیر، a$ به b$ تبدیل شه:
$a = '5852& ^ \a\\b\\\\\c D \\e k.';
$b = 'bDek';
از کد زیر استفاده میخوام بکنم:
preg_replace("/(\\\.|\\[a-zA-Z]|[^[a-zA-Z])+/", '', $a);
مشکل اینجاست که این کد در این سرویس آنلاین (http://www.pagecolumn.com/tool/pregtest.htm) صحیح کار میکنه ولی توی لوکال من "Dk" برمیگردونه یعنی صحیح کار نمیکنه!
راه حلی اساسی به نظرتون میرسه که همهجا کار کنه و قابل کنترل باشه؟
این هم مشخصات لازم:
PHP: 5.3.6
PCRE Library Version: 8.11 2010-12-10
من گفتم بیام کاراکتر به کاراکتر چک کنم ولی متاسفانه PHP تفاوتی بین یک بکاسلش و دو تا بکاسلش قائل نمیشه یعنی مقدار زیر رو ۴ کارکتر میبینه:
$str = '\a\\b'; // "\", "a", "\", "b"
دوستان نظرتون چیه؟
من یک String دارم شامل کاراکترهای مختلف. حالا میخوام فقط حروف لاتینش رو بگیرم و فقط اونهایی که با بکاسلش Escape نشدهاند. یعنی در کد زیر، a$ به b$ تبدیل شه:
$a = '5852& ^ \a\\b\\\\\c D \\e k.';
$b = 'bDek';
از کد زیر استفاده میخوام بکنم:
preg_replace("/(\\\.|\\[a-zA-Z]|[^[a-zA-Z])+/", '', $a);
مشکل اینجاست که این کد در این سرویس آنلاین (http://www.pagecolumn.com/tool/pregtest.htm) صحیح کار میکنه ولی توی لوکال من "Dk" برمیگردونه یعنی صحیح کار نمیکنه!
راه حلی اساسی به نظرتون میرسه که همهجا کار کنه و قابل کنترل باشه؟
این هم مشخصات لازم:
PHP: 5.3.6
PCRE Library Version: 8.11 2010-12-10
من گفتم بیام کاراکتر به کاراکتر چک کنم ولی متاسفانه PHP تفاوتی بین یک بکاسلش و دو تا بکاسلش قائل نمیشه یعنی مقدار زیر رو ۴ کارکتر میبینه:
$str = '\a\\b'; // "\", "a", "\", "b"
دوستان نظرتون چیه؟