آژانس هواپیمایی
pop up

محدودیت PCRE library

شروع موضوع توسط Shahed ‏16 دسامبر 2007 در انجمن PHP

  1. Shahed

    Shahed Registered User

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    21
    محل سکونت:
    mt.cgi
    سلام
    تا حالا با preg_match کار کردید؟
    آرگومان دومش که ورودی هست. تا حالا شده بیشتر از 4370 بهش بدید؟؟
    گویا محدودیت داره تا ماکسیمم 4370 کاراکتر. منبعش هم اینجاست: http://bugs.php.net/bug.php?id=33468
    پاراگراف آخر:
    کل preg ها گویا این محدودیت رو دارند ! راه حل چیه؟ جایگزینی هست؟
     
  2. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    خیلی منطقی نیست regex طولانی بدی به موتور pcre. اونوقت cpu usage وحشتناک میره بالا.
     
  3. Shahed

    Shahed Registered User

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    21
    محل سکونت:
    mt.cgi
    راه دیگه ای هست؟؟
    آخه استرینگم خیلی طولانیه کاریش هم نمیتونم بکنم. یه قسمتیش رو از وسطش میخوام !
     
  4. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    اگه یه قسمتی رو از وسطش بخوای دیگه به اول و آخرش نباید کار داشته باشی.
    اگر خواستی میتونی رشته رو بذاری و بگی کدوم بخششو میخوای ببینیم regex ش چی میشه. اگه سکرت هست میتونی یه چیزی شبیهشو بذاری.
     
  5. Shahed

    Shahed Registered User

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    21
    محل سکونت:
    mt.cgi
    نه بابا سکرت چیه :D
    ببین یه صفحه HTML خیلی بزرگی هست که من فقط محتویات داخل تگ body شو میخوام !! html دست من نیست که کوچیکترش بکنم !
     
  6. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    آهان. من فکر کردم 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);
    	}
    
     
  7. boxilink
  8. Shahed

    Shahed Registered User

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    21
    محل سکونت:
    mt.cgi
    استاد این substr محدودیت نداره که؟

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

    Shahed Registered User

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

    firebird Registered User

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