برگزیده های پرشین تولز

محدودیت PCRE library

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
سلام
تا حالا با preg_match کار کردید؟
آرگومان دومش که ورودی هست. تا حالا شده بیشتر از 4370 بهش بدید؟؟
گویا محدودیت داره تا ماکسیمم 4370 کاراکتر. منبعش هم اینجاست: http://bugs.php.net/bug.php?id=33468
پاراگراف آخر:
This is the limitation of PCRE library, which limits the size of certain
elements to prevent massive memory usage. This is not a PHP limit and as
such is not a PHP bug.

کل preg ها گویا این محدودیت رو دارند ! راه حل چیه؟ جایگزینی هست؟
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
خیلی منطقی نیست regex طولانی بدی به موتور pcre. اونوقت cpu usage وحشتناک میره بالا.
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
خیلی منطقی نیست regex طولانی بدی به موتور pcre. اونوقت cpu usage وحشتناک میره بالا.
راه دیگه ای هست؟؟
آخه استرینگم خیلی طولانیه کاریش هم نمیتونم بکنم. یه قسمتیش رو از وسطش میخوام !
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
اگه یه قسمتی رو از وسطش بخوای دیگه به اول و آخرش نباید کار داشته باشی.
اگر خواستی میتونی رشته رو بذاری و بگی کدوم بخششو میخوای ببینیم regex ش چی میشه. اگه سکرت هست میتونی یه چیزی شبیهشو بذاری.
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
اگه یه قسمتی رو از وسطش بخوای دیگه به اول و آخرش نباید کار داشته باشی.
اگر خواستی میتونی رشته رو بذاری و بگی کدوم بخششو میخوای ببینیم regex ش چی میشه. اگه سکرت هست میتونی یه چیزی شبیهشو بذاری.
نه بابا سکرت چیه :D
ببین یه صفحه HTML خیلی بزرگی هست که من فقط محتویات داخل تگ body شو میخوام !! html دست من نیست که کوچیکترش بکنم !
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
آهان. من فکر کردم regex بزرگ هست. این کار رو با substr بهتر میتونی انجام بدی.
ببین از تو کدهای قدیمیم چی پیدا کردم:
کد:
	function cut_section(&$html, $start, $end) 
	{
		$p = strpos($html, $start);
		$html = substr($html, $p + strlen($start));
		$p = strpos($html, $end);
		$html = substr($html, 0, $p);
	}
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
آهان. من فکر کردم regex بزرگ هست. این کار رو با substr بهتر میتونی انجام بدی.
ببین از تو کدهای قدیمیم چی پیدا کردم:
کد:
	function cut_section(&$html, $start, $end) 
	{
		$p = strpos($html, $start);
		$html = substr($html, $p + strlen($start));
		$p = strpos($html, $end);
		$html = substr($html, 0, $p);
	}
استاد این substr محدودیت نداره که؟

یه چیز دیگه !! الان دارم با strip_html این کار رو انجام میدم. تگ <p> رو به عنوان allowable معرفی کردم خودش همه چی رو حذف میکنه خیلی قشنگ !! فقط یه مشکل داره اونم اینه که اتربیوز های تگ p حذف نمیشن !! چون متنی که میخوام پلینه پلین میخوام :(
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
البته بگم که کارم با strip_html کامل راه افتاده !! حالا اتربیوز های p هم باشن مشکلی پیش نمیاد !! ولی خوب نباشن بهتره :D
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
substr محدودیت نداره.
اونی که میگی فکر کنم strip_tags باشه. مجید.
برای اینکه <p> ها رو حذف کنی بعدش میتونی از str_replace استفاده کنی.
 
بالا