PDA

View Full Version : سوال: پردازش متن با Regular Expresion



alismith
جمعه 16 آبان 1393, 21:47 عصر
سلام دوستان من میخوام مثل markdown بتونم با یک - ساده به کاربرم این امکان بدم که هر چندتا دلش خواست به متنش فهرست اضافه کنه
این عکس ببینید

http://i.stack.imgur.com/O9ueY.png
مشکل اینجا هستش که من نمیدونم چطوری میشه الگویی نوشت که هم بتونه تشخیص بده چدتا لیست تو متن وجود داره و اینکه هر لیست چندتا عنصر داره و از همه مهمتر اینکه اگر - سمت راست بود یعنی لیست اچ تی ام ال rtl درست کنم و اگر سمت چپ بود ltr درست کنم.

یک الگو برای فارسی نوشتم که خوب کار نمیکنه و نمیتونه تشخیص بده چندتا لیست تو صفحه هستش و فقط عناصر بر می گردونه


$ptrn_fa = '([^\n]*)\s*-[^\n]';

امیدوارم متوجه منظورم شده باشید، من میخوام سمت سرور این - هارو به لیست تبدیل کنم

دوستان کسی میتونه کمک کنه؟



اینجا هم پرسیدم جواب درست و کامل ندادن http://stackoverflow.com/questions/26806668

با تشکر

alismith
جمعه 16 آبان 1393, 23:15 عصر
خودم درستش کردم!

bagherok
شنبه 17 آبان 1393, 00:31 صبح
خودم درستش کردم!
چطوری:تشویق:


<?php
header('Content-Type: text/html; charset=utf-8');
$text="درود
روزگار نیک
درود-
-engilsh
-engilsh
روزگار نیک
";

$ptrn_fa = '#[^\n]*\n+#';

preg_match_all($ptrn_fa, $text, $matches_out);
$matches_out=$matches_out[0];

foreach($matches_out as $m_o){

if(substr(trim($m_o),-1)=="-")
echo '<ul dir="rtl"><li>'.trim($m_o).'</li></ul>'.PHP_EOL;
elseif($m_o[0]=="-")
echo '<ul><li>'.trim($m_o).'</li></ul>'.PHP_EOL;
else{
if(mb_detect_encoding($m_o, 'UTF-8', true))
echo '<p style="text-align: right;">'.$m_o.'</p>'.PHP_EOL;
else
echo '<p>'.$m_o.'</p>'.PHP_EOL;
}
}


?>

رضا قربانی
یک شنبه 18 آبان 1393, 21:55 عصر
اینجا هم یه سری توضیحات در مورد Regular Expresion داده شده . شاید بدردتون خورد :
http://barnamenevis.org/showthread.php?358191-%D8%AF%D9%86%DB%8C%D8%A7%DB%8C-%D8%B1%DA%AF%D9%88%D9%84%D8%A7%D8%B1-%D8%A7%DA%A9%D8%B3%D9%BE%D8%B1%D8%B4%D9%86-Regular-expression