PDA

View Full Version : سوال: جدا سازی با explode



matrixhassan
دوشنبه 16 بهمن 1391, 01:34 صبح
با سلام

من با دستور explode میخوام متن ورودی رو که داری چندین <br /> هست رو تا <br /> سوم بدست بیارم و از کد




$array_search = $message;
$array_search = nl2br ($array_search);
$psearch = explode ('<br>',$array_search,1);



(البته تو خونه اول explode ، گزینه <br /> هستش ولی نمیدونم چرا برای ارسال میخوام بزنم پاک میشه به هر حال)

استفاده میکنم ولی جواب نمیده ممنون میشم کمک کنید .

Reza1607
دوشنبه 16 بهمن 1391, 09:06 صبح
به جاي يك بايد عدد سه رو بذاريد

matrixhassan
دوشنبه 16 بهمن 1391, 09:27 صبح
عمل نمیکنه مثلا تو عبارت زیر

سلام


سلام


سلام

اگه به جای 1 همون 3 رو بزاری باید سلام دوم رو بهت نده ولی تا آخر عبارتو میده بهت .

دستور با تمام علایم درست جواب میده ولی انگار با تگهای html کار نمیکنه ؟

اگه اینطور نیست یه مثال بزنید لطفا

Reza1607
دوشنبه 16 بهمن 1391, 09:49 صبح
خوب شما به اين صورت عمل كنيد


$array=explode('<br />',$array_search);

$str='';
foreach($array as $index=>$item){
if($index==3) break;
$str.=$item.'<br />';
}

echo $str;

matrixhassan
دوشنبه 16 بهمن 1391, 13:04 عصر
من نمیخوام که با فاصله جدا شده من میخوام تو یه متن که ممکن چند صفحه باشه فقط سه قسمت اول که Enter زده شده یا همون <br> افتاده اون سه قسمت متنو بدست بیارم

MMSHFE
دوشنبه 16 بهمن 1391, 22:30 عصر
اینو امتحان کنید:


$array_search = nl2br($message);
$offset = -1;
for($i = 0; $i < 3; $i++) {
$offset = mb_strpos($array_search, '<br />', $offset + 1, 'utf-8');
}
$array_search = mb_substr($array_search, 0, $offset + 6); // 6 is the length of <br />
$psearch = explode ('<br />', $array_search);

matrixhassan
دوشنبه 16 بهمن 1391, 22:57 عصر
با تشکر

نشد خطای زیر رو میده



Warning: mb_strpos() [function.mb-strpos (http://barnamenevis.org/function.mb-strpos)]: Empty delimiter in C:\wamp\www\test 10\nl2br\index.php on line 55

من بازم توضیح بدم میخوام متن رو بگیرم و تا سه تا Enter جدا کنم و این عبارت جدا شده رو بازم با استفاده از nl2br به صورت اولیه چاپ کنم همین

MMSHFE
دوشنبه 16 بهمن 1391, 23:01 عصر
مشکل از ادیتور سایته. توی تگ HTML گذاشتم که کد صحیح رو ببینید.

matrixhassan
دوشنبه 16 بهمن 1391, 23:18 عصر
با تشکر ولی انگار یه مشکل داره اونم اینکه مثلا تو مثال زیر

سلام
چطوری

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

MMSHFE
دوشنبه 16 بهمن 1391, 23:28 عصر
خوب دلیلش اینه که تا آخرین </ br> رو پیدا میکنه و چون Enter نزدین، nl2br برای خط دوم تگ br تولید نمیکنه. اگه میخواین سه خط اول رو بگیرین و با br نشون بدین، راه راحتترین هم هست:


<?php
$array_search = explode("\n", $message);
for($i = 0; $i < min(count($array_search), 3), $i++) {
echo trim($array_search[$i]) . '<br />' . PHP_EOL;
}
?>

matrixhassan
دوشنبه 16 بهمن 1391, 23:36 عصر
با تشکر از زحمات شما حل شد

یه سوال دیگه میخواستم از کدهای یه صفحه آدرس تمام لینکهای که در قسمت href تگ a هستش رو بدست بیارم و برای این کار از دستور زیر استفاده میکنم





$pattern = '/<a href="(.*?)">/i';

preg_match_all($pattern, $contenturl, $matches, PREG_PATTERN_ORDER);





ولی این دستور از بین 300 400 تا لینک فقط 30 40 تا لینک ولی همرا با تگش میده

من میخوام فقط آدرس لینکی رو داشته باشم که تو href تگ a نوشته میشه

ممنون میشم در این موردم راهنمایی کنید

MMSHFE
دوشنبه 16 بهمن 1391, 23:44 عصر
شاید توی بقیه لینکها a و href دقیقاً پشت سر هم نیستن. هر چی هست مربوط به Pattern میشه.