مشاوره آنلاین در مورد تعمیر و نگهداری وب سایت در اولیانوفسک: ICQ# 179104682

نحوه کوتاه کردن رشته سیریلیک با با استفاده از PHP

تاریخ ارسال مقاله: 1393/06/01

ایجاد یک سایت در اولیانوفسک با عملکرد جدی و تعامل با پایگاه های داده اغلب مستلزم آن است که یک خط خاص از حجم مشخصی تجاوز نکند. این ممکن است لازم باشد، به عنوان مثال، برای محدود کردن تعداد کاراکترهای ارسال شده به سرور پایگاه داده با استفاده از فیلد ورودی، نمایش تنها بخشی از خط در صفحه سایت (به عنوان مثال، هنگام تولید اعلان های خبری با ارتفاع مساوی در لیست) و برای بسیاری از وظایف دیگر.

اولین چیزی که برنامه نویسان تازه کار با آن مواجه می شوند این است تابع PHP substr. این واقعا برای پیرایش رشته استفاده می شود و نحو آن ساده است. substr(string, int start [, int length])، که در آن int start کاراکتر شروعی است که از آن می توان رشته را برش داد، و پارامتر اختیاری int length تعداد کاراکترهایی است که باید برش دهید. با این حال، برای یک برنامه نویس بی تجربه، ممکن است عجیب به نظر برسد اگر سعی کند از آن برای PHP برش رشته سیریلیک استفاده کند. در نتیجه عملکرد substr با یک رشته سیریلیک، یک علامت سوال یا یک علامت سوال در یک لوزی ممکن است در انتهای رشته کوتاه ظاهر شود، و تعداد کلبه دلایلی، کاراکترهای برش دو برابر کمتر از آنچه در پارامتر طول int مشخص شده است. چرا این اتفاق می افتد؟

واقعیت این است که کاراکترهای روسی زبان در UTF-8 اندازه 2 بایت دارند و کاراکترهای لاتین فقط 1 بایت هستند. تابع substr PHP یک رشته را دقیقاً بر اساس بایت برش می دهد نه با کاراکتر. اگر رشته از کاراکترهای لاتین تشکیل شده باشد، هیچ چیز عجیبی رخ نمی دهد، زیرا تعداد کاراکترها با تعداد بایت ها برابر است. و هنگام کار با سیریلیک، جایی که هر کاراکتر 2 بایت اشغال می کند، پارامتر int length به راحتی می تواند در "وسط" کاراکتر قرار گیرد و در نتیجه در انتهای خط برش، هنگام خروجی، شاهد این مشکل خواهیم بود. علامت سوال سرنوشت ساز در لوزی.

چگونه قسمتی از یک رشته را با سیریلیک به درستی برش دهیم؟

راه حل این مشکل در واقع بسیار ساده است. برای PHP صحیحبرای استفاده از تابع PHP iconv_substr برای بریدن رشته ای حاوی کاراکترهای سیریلیک نیاز دارید

نحو تابع ساده است:

iconv_substr (رشته، int start[، int طول[، مجموعه حروف]])

نمونه ای برای برش رشته های روسی زبان به 80 کاراکتر با رمزگذاری UTF-8 با استفاده از iconv_substr:

$new_string = iconv_substr ($string, 0 , 80 , "UTF-8");

عدد صفر در مثال به این معنی است که شمارش 80 کاراکتر از همان ابتدای خط شروع می شود.

چیدمان ریسپانسیو سایت شامل تغییر کافی صفحات آن بسته به دستگاهی است که بازدید کننده استفاده می کند. اگر در مورد عناصر بلوک و درون خطی، تقریباً همه چیز به "اتوماسیون" کمک می کند. با استفاده از CSSو جاوا اسکریپت، پس هنگام ایجاد محتوا و استفاده از پایگاه داده، انجام آن بدون سمت سرور دشوار است.

ما معمولاً یک رشته را در PHP برش می دهیم عنصر HTMLطرح بندی محدودیتی در تعداد کاراکترهای قابل مشاهده دارد، اما این یک کار خصوصی است.

راه حل سنتی

یکی از محبوب ترین و پرکاربردترین توابع () substr است. دو یا سه پارامتر ارسال می شود:

    رشته اصلی؛ موقعیت شروع ($iPos)؛ طول رشته فرعی که باید بریده شود ($iLen).

آخرین پارامتر را می توان حذف کرد. اگر فقط دو پارامتر مشخص شود: نتیجه substr() یک زیر رشته خواهد بود، از موقعیت شروع (iPos $) تا انتها. رشته اصلی. اگر سه پارامتر ارسال شد، رشته PHP را از موقعیت شروع ($iPos) به طول مشخص شده ($iLen) کوتاه کنید.

انتخاب تنها ابتدای رشته با این تابع زمانی امکان پذیر است که اولین پارامتر صفر باشد. اگر موقعیت شروع منفی باشد، PHP کاراکتر را در موقعیت $iPos از انتهای رشته به عنوان شروعی که از آن رشته را برش می دهد، در نظر می گیرد. شماره گذاری کاراکترها در یک خط از صفر انجام می شود.

عملکرد ویژه

PHP وظیفه "برش یک رشته" (به معنای گسترده) را در زمینه: از هر دو طرف در نظر می گیرد. از نظر تاریخی، این تابع trim() است که هدف آن حذف کاراکترهای ناچیز است:

    فضاها؛ شکستگی خط؛ برگشت محموله؛ جدول بندی کاراکترهای پوچ

از دو سر خط این یک ویژگی بسیار درخواستی است، به خصوص هنگام کار با پایگاه های داده، که انتخاب آن اغلب حاوی شکاف های زیادی است. هنگام استفاده از تابع explode()، کاراکترهای اضافی نیز اغلب از ابتدا و انتهای رشته به دست می آیند.

با این حال، همه توسعه دهندگان از تابع trim() با پتانسیل کامل خود استفاده نمی کنند. برای کار "ترم رشته"، PHP استفاده از پارامتر دوم تابع را پیشنهاد می کند، جایی که می توانید مجموعه ای از کاراکترها را که باید از رشته اصلی حذف شوند را مشخص کنید.


ضروری است که کاراکترها فقط از ابتدا و از انتهای رشته اصلی حذف شوند. مهم است که با دستکاری ماسک های شخصیت ها و دنباله وظایف فرعی حذف شوند.

    ابتدا رشته در PHP را با یک ماسک برش می دهیم. سپس از سوی دیگر. سپس در سوم.

در نتیجه توالی گزینه ها برای استفاده از یک تابع، متن را در PHP همانطور که برای حل کار مورد نیاز است قطع می کنیم.

راه های غیر استاندارد

اگر طیف وسیعی از توابع رشته زبان را در نظر نگیریم، آنگاه جفت توابع explode()/implode() و تابع str_replace() اجازه حل وظایف غیر استاندارد "برش" اطلاعات رشته را می دهند.


نتیجه یک پرس و جو MySQL همیشه در ساختار اطلاعات خروجی رسمی است و محتوای فیلدها (عناصر) نتیجه همیشه توسط منبع، یعنی توسعه دهنده ای که پایگاه داده را طراحی کرده است، تعیین می شود.

این یک مثال خاص است، اما به طور دقیق به این سوال پاسخ می دهد: چگونه یک رشته را در PHP زمانی که رشته های زیادی وجود دارد برش دهیم. تابع ()trm یک ویژگی خاص است و تاریخچه آن توسط وظایف زمانی تعیین می شود که اطلاعات زیادی وجود نداشته باشد و نیازی به قطع چیزی غیر از کاراکترهای ناچیز نباشد.

امروزه اطلاعات در حجم زیاد در گردش است و برش خط به خط نه تنها غیر ضروری، بلکه غیرمنطقی است.

تقسیم به اجزا نیز گزینه ای در مورد نحوه برش یک رشته است. PHP به طور خودکار منفجر می شود () یک متن بزرگ را به بسیاری از خطوط ضروری برش می دهد. با استفاده از تابع str_replace () - یعنی جایگزینی یک رخداد از کاراکترها با دیگری - می توانید به یک اثر مشابه دست پیدا کنید.


پویایی و حجم اطلاعاتی که باید پردازش شوند، اول از همه، یک راه حل مناسب است و نه استفاده از یک تابع خاص.

برنامه نویسان اغلب مجبورند با توابع دستکاری رشته های مختلف در php سر و کار داشته باشند. همه توابع در کتاب های مرجع مختلف ارائه شده است، اما من می خواهم خود را به موارد اصلی محدود کنم.

تابع PHP substr - بخشی از یک رشته را دریافت کنید

هنگامی که باید یک قطعه با طول معین را از یک رشته انتخاب کنید، با شروع موقعیت داده شده، تابع substr به کمک می آید.در این تابع، یک کاما ارسال می شود: متن، موقعیت شروع و تعداد کاراکترها. آخرین پارامتر اختیاری است و در صورت عدم وجود آن، نتیجه تابع قطعه ای از متن مبدا از موقعیت شروع تا انتهای خط خواهد بود.

تابع PHP strlen - طول یک رشته را بدست آورید

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

تابع trim PHP - فضاهای اضافی را از لبه های یک رشته حذف کنید

تابع trim هر کاراکتر فضای خالی را از لبه های رشته حذف می کند، از جمله کاراکتر خط جدید. همچنین توابع rtrim و ltrim وجود دارند که فاصله‌های انتهای و/یا ابتدای رشته را حذف می‌کنند.

تابع PHP strpos - جستجو در یک رشته

تابع strpos به دنبال یک زیر رشته در یک رشته می گردد و در صورت موفقیت، موقعیت ابتدای آن رشته فرعی را برمی گرداند. پس از یافتن اولین رشته فرعی، جستجو متوقف می شود.ترتیب آرگومان‌های تابع، درست حدس زدید: رشته منبع، رشته فرعی، موقعیت شروع. پارامتر سوم اختیاری است، اما سعی کنید آن را به خاطر بسپارید.

تابع PHP strip_tags - برچسب های HTML و PHP را از یک رشته حذف می کند

تابع strip_tags رشته‌ای را برمی‌گرداند تگ های htmlو php وقتی یک ماژول نظر در سایت خود بنویسید مفید خواهد بود تا فرصتی برای مهاجمان ایجاد نشود تا سایت شما را از طریق یک فرم هک کنند.htmlو phpباید حذف شود"؛ echo strip_tags ($text)؛ echo strip_tags ($text," ");//do not remove em tags ?> اولین آرگومان تابع متن منبع است و دومی تگ هایی است که نباید حذف شوند.

تابع PHP strtolower - یک رشته را به حروف کوچک تبدیل می کند

تابع PHP strtoupper - تبدیل رشته به حروف بزرگ

اگر این سایت برای شما مفید بود، می توانید با قرار دادن در توسعه آن کمک کنید

این سایت با توجه به دستگاهی که بازدید کننده استفاده می کند، تغییرات کافی در صفحات خود را فرض می کند. اگر با توجه به عناصر بلاک و درون خطی، تقریباً همه چیز با استفاده از CSS و جاوا اسکریپت به "اتوماسیون" کمک می کند، در هنگام تولید محتوا و استفاده از پایگاه داده، انجام آن بدون سمت سرور دشوار است.

زمانی که عنصر طرح بندی HTML محدودیتی در تعداد کاراکترهای قابل مشاهده دارد، معمولاً یک رشته را در PHP کوتاه می کنیم، اما این یک موضوع خصوصی است.

راه حل سنتی

یکی از محبوب ترین و پرکاربردترین توابع () substr است. دو یا سه پارامتر ارسال می شود:

  • رشته اصلی؛
  • موقعیت شروع ($iPos)؛
  • طول رشته فرعی که باید بریده شود ($iLen).

آخرین پارامتر را می توان حذف کرد. اگر فقط دو پارامتر داده شود: نتیجه substr() یک زیر رشته خواهد بود، از موقعیت شروع (iPos $) تا انتهای رشته منبع. اگر سه پارامتر ارسال شد، رشته PHP را از موقعیت شروع ($iPos) به طول مشخص شده ($iLen) کوتاه کنید.

انتخاب تنها ابتدای رشته با این تابع زمانی امکان پذیر است که اولین پارامتر صفر باشد. اگر موقعیت شروع منفی باشد، PHP کاراکتر را در موقعیت $iPos از انتهای رشته به عنوان شروعی که از آن رشته را برش می دهد، در نظر می گیرد. شماره گذاری کاراکترها در یک خط از صفر انجام می شود.

عملکرد ویژه

PHP وظیفه "برش یک رشته" (به معنای گسترده) را در زمینه: از هر دو طرف در نظر می گیرد. از نظر تاریخی، این تابع trim() است که هدف آن حذف کاراکترهای ناچیز است:

  • فضاها؛
  • شکستگی خط؛
  • برگشت محموله؛
  • جدول بندی
  • کاراکترهای پوچ

از دو سر خط این یک ویژگی بسیار درخواستی است، به خصوص هنگام کار با پایگاه های داده، که انتخاب آن اغلب حاوی شکاف های زیادی است. هنگام استفاده از تابع explode()، کاراکترهای اضافی نیز اغلب از ابتدا و انتهای رشته به دست می آیند.

با این حال، همه توسعه دهندگان از تابع trim() با پتانسیل کامل خود استفاده نمی کنند. برای کار "ترم رشته"، PHP استفاده از پارامتر دوم تابع را پیشنهاد می کند، جایی که می توانید مجموعه ای از کاراکترها را که باید از رشته اصلی حذف شوند را مشخص کنید.

ضروری است که کاراکترها فقط از ابتدا و از انتهای رشته اصلی حذف شوند. مهم است که با دستکاری ماسک های شخصیت ها و دنباله وظایف فرعی حذف شوند.

  • ابتدا رشته در PHP را با یک ماسک برش می دهیم.
  • سپس از سوی دیگر.
  • سپس در سوم.

در نتیجه توالی گزینه ها برای استفاده از یک تابع، متن را در PHP همانطور که برای حل کار مورد نیاز است قطع می کنیم.

راه های غیر استاندارد

اگر طیف وسیعی از توابع رشته زبان را در نظر نگیریم، آنگاه جفت توابع explode()/implode() و تابع str_replace() اجازه حل وظایف غیر استاندارد "برش" اطلاعات رشته را می دهند.

نتیجه یک پرس و جو MySQL همیشه در ساختار اطلاعات خروجی رسمی است و محتوای فیلدها (عناصر) نتیجه همیشه توسط منبع، یعنی توسعه دهنده ای که پایگاه داده را طراحی کرده است، تعیین می شود.

این یک مثال خاص است، اما به طور دقیق به این سوال پاسخ می دهد: چگونه یک رشته را در PHP زمانی که رشته های زیادی وجود دارد برش دهیم. تابع ()trm یک ویژگی خاص است و تاریخچه آن توسط وظایف زمانی تعیین می شود که اطلاعات زیادی وجود نداشته باشد و نیازی به قطع چیزی غیر از کاراکترهای ناچیز نباشد.

امروزه اطلاعات در حجم زیاد در گردش است و برش خط به خط نه تنها غیر ضروری، بلکه غیرمنطقی است.

تقسیم به اجزا نیز گزینه ای در مورد نحوه برش یک رشته است. PHP به طور خودکار منفجر می شود () یک متن بزرگ را به بسیاری از خطوط ضروری برش می دهد. با استفاده از تابع str_replace () - یعنی جایگزینی یک رخداد از کاراکترها با دیگری - می توانید به یک اثر مشابه دست پیدا کنید.

پویایی و حجم اطلاعاتی که باید پردازش شوند، اول از همه، یک راه حل مناسب است و نه استفاده از یک تابع خاص.