PDA

View Full Version : تشخیص حرف فارسی از انگلیسی



imdeveloper
چهارشنبه 22 مهر 1394, 23:10 عصر
سلام
من یه ورودی دارم که میخوام کدی بنویسم که اون ورودی رو بررسی کنه اگه توش حرف انگلیسی داشت بهش یه استایل خاصی بده اگر هم نداشت که هیچی
چجوری میتونم همچین کاری بکنم؟؟
مثلا فرض کنید ورودی من اینه : "سلام hi"
بعد میخوام مثلا اون "hi" یه استایل خاصی بهش بدم
لطفا کمک کنید
من خودم فقط تونستم با تابع ord تشخیص بدم که توش حرف انگلیسی هست یا نه اما بقیه کار رو نتونستم !!

imdeveloper
پنج شنبه 23 مهر 1394, 09:58 صبح
UP :متفکر: ....

djtrex
پنج شنبه 23 مهر 1394, 11:21 صبح
سلام
من یه ورودی دارم که میخوام کدی بنویسم که اون ورودی رو بررسی کنه اگه توش حرف انگلیسی داشت بهش یه استایل خاصی بده اگر هم نداشت که هیچی
چجوری میتونم همچین کاری بکنم؟؟
مثلا فرض کنید ورودی من اینه : "سلام hi"
بعد میخوام مثلا اون "hi" یه استایل خاصی بهش بدم
لطفا کمک کنید
من خودم فقط تونستم با تابع ord تشخیص بدم که توش حرف انگلیسی هست یا نه اما بقیه کار رو نتونستم !!



<?php


$text = 'سلام hi - bye خداحافظ';


$styledText = preg_replace_callback('/[a-zA-Z]+/', function($matches) {
return '<b>' . $matches[0] . '</b>';
}, $text);


echo $styledText . PHP_EOL;



ورودی:


سلام hi - bye خداحافظ


خروجی:


سلام <b>hi</b> - <b>bye</b> خداحافظ


اطلاعات بیشتر:
http://php.net/manual/en/function.preg-replace-callback.php

برای حالت های مختلف میتونید عبارت regex رو تغییر بدید.

imdeveloper
پنج شنبه 23 مهر 1394, 12:27 عصر
مرسی از راهنماییتون
الان یه چیزه دیگه ای که مشکل دارم این هستش که من میخوام یه لیست رو بگیرم و بررسی کنم اگر توش حرف انگلیسی داشت استایل بدم
اینو چی کنم؟؟
مثلا یه لیست اینجوری :


<li>tst تست </li>
<li>تست</li>
<li>test</li><li>tst تست </li>
<li>تست</li>
<li>test</li>

djtrex
پنج شنبه 23 مهر 1394, 13:18 عصر
مرسی از راهنماییتون
الان یه چیزه دیگه ای که مشکل دارم این هستش که من میخوام یه لیست رو بگیرم و بررسی کنم اگر توش حرف انگلیسی داشت استایل بدم
اینو چی کنم؟؟
مثلا یه لیست اینجوری :


<li>tst تست </li>
<li>تست</li>
<li>test</li><li>tst تست </li>
<li>تست</li>
<li>test</li>


فقط بازی با regex هست! میتونید از regexr استفاده کنید عبارت هاتون رو تست کنید:
http://www.regexr.com/

برای مثالتون (البته راه حل های دیگه هم ممکنه باشه باید تست کنید!)



<?php


$text = '<li>tst تست </li>
<li>تست</li>
<li>test</li><li>tst تست </li>
<li>تست</li>
<li>test</li>';


$styledText = preg_replace_callback('/<li>(.*?)<\/li>/sim', function($matches) {


if(preg_match('/[a-zA-Z]+/', $matches[1])){
return '<li class="en">' . $matches[1] . '</li>';
}


return $matches[0];


}, $text);


echo $styledText . PHP_EOL;


خروجی:



<li class="en">tst تست </li>
<li>تست</li>
<li class="en">test</li><li class="en">tst تست </li>
<li>تست</li>
<li class="en">test</li>


در بعضی موارد از جاوا اسکریپت هم میتونید استفاده کنید! باید ببینید چه نیازی دارید.