Знайти входження рядка php. Пошук підрядки у рядку за допомогою PHP
PHP пропонує використовувати різні варіанти пошуку рядків в інших рядках. Існують звичайні функції. Є можливість використання регулярних виразів. Розробник може розробити власний варіант пошуку інформації за дотримання правил синтаксису.
Пошук рядків не обмежується фактом підтвердження наявності потрібного символу чи рядка у потрібному місці. Рядком може виступати об'єкт – це більш ємне інформаційне поняття, ніж просто рядок. Пошук особливо ефективний, коли момент виявлення супроводжується негайним прийняттям рішення, а чи не вимагає додаткової обробки.
Основні функціональні можливості пошуку
Пошук – функція strpos(). Її результат - або булеве значення, або позиція входження шуканого (другий параметр) у рядку (перший параметр) з позиції (третій параметр). Якщо останній параметр не встановлено, пошук виконується з нульової позиції рядка.
У цьому прикладі PHP-пошук у рядку показаний на прикладі одиночного символу. Замість символу можна використовувати рядок. PHP не обмежує програміста в розмірах рядків, але розумні межі мають важливе значення.
Шукати рядки в рядках можна з урахуванням регістру, з першого чи останнього входження та використовувати регулярні вирази. Як і в інших випадках, істотне значення має кодування сторінки, на якій знаходиться скрипт.
У деяких випадках доцільно використовувати варіант iconv_strpos(), а чи не просто strpos(). У переважній більшості випадків пошук підрядки у рядку PHP забезпечить ідеально точно: достатньо тримати кодування сторінки та рядки в одному кодуванні.
Особливості стандартного підходу
Якщо пошук підрядки у рядку PHP не має результату: шуканого немає, результат буде логічним значенням. Однак якщо шуканий підряд починається з нульової позиції, то це слід виділити особливо в операціях порівняння та аналізу результату. Коли результат дорівнює 0 – це ненабагато стоять далі від результату false.
На відміну від JavaScript, щодо рядків PHP більш консервативний, і для нього досі рядки - це рядки. Робота з ними - це малі функції: від простих рівня strpos до складних, що використовують регулярні вирази.
Шукати потрібно, щоб:
- ухвалити рішення про направлення алгоритму;
- замінити шукане інше;
- перевірити подію;
- збільшити лічильник статистики та ін.
Це звична логіка алгоритму, JavaScript пішов далі і визнав рядки об'єктами. Але одного зізнання практично мало. Якщо абстрагуватися від поняття "рядок" і розуміти під ним реальний об'єкт, питання "пошук рядка в рядку" PHP дозволить сформулювати в контексті реального методу, наприклад, яблуко може бути стиглим, не тільки коли воно червоне.
Класичний пошук слова "червоне" в описі яблука не є гарантією достовірної відповіді про стиглість фрукта. Якщо яблуко представлено не рядком, а об'єктом, пошук рядка в рядку PHP виконає не як strpos, а як метод реального об'єкта. При цьому немає гарантії, що в тілі методу буде використовуватися саме функція strpos.
Стандартні функції у нестандартних рішеннях
Характерна риса звичної обробки інформації (людиною): позиція, де що знаходиться, має значення, коли вона є метою чи рішенням. У решті випадків не важливо, де що є, важливо, що воно позначено і є підставою для подальших дій.
Опосередковано пошук виконує у функціях trim, str_replace та інших. Цікавий варіант пошуку доступний при спільному застосуванні explode/implode та маніпулюванні масивами.
Якщо використовувати всю функціональність PHP, пошук у рядку легко набуває семантики, виходить за рамки звичного синтаксису і стає причиною для набуття реального сенсу. Маніпулювання змістом в людини звичніше, для алгоритму безпечніше, а трансформація рядків в об'єкти - як перехід від машинних кодів у світ сучасних мов програмування.
Рядки - дуже важливий тип даних, з яким доводиться постійно працювати при вирішенні завдань Інтернет-розробки. У цій статті описано 10 дуже корисних прийомів, які зроблять життя PHP розробнику легшим.
Автоматичне видалення html тегів з рядка
При використанні форм, що заповнюються користувачем, іноді потрібно видалити всі зайві теги. Це завдання легко вирішується за допомогою функції strip_tags():
$text = strip_tags($input, "");
Отримуємо текст між $start та $end
Така функція має бути в арсеналі розробника: вона отримує оригінальний рядок, початок та кінець, а повертає текст, який міститься між $start та $end.
Function GetBetween($content,$start,$end)( $r = explode($start, $content); if (isset($r))( $r = explode($end, $r); return $r; ) return "";
Трансформація URL у гіперпосилання
Якщо ви помістите URL-адресу у формі коментаря в блозі WordPress, вона автоматично трансформується на гіперпосилання. Якщо ви хочете реалізувати таку ж функціональність на своєму сайті або в веб-додатку, можна використовувати наступний код:
$url = "Jean-Baptiste Jung (http://www.webdevcat.com)"; $url = preg_replace("#http://(+)#", " ", $url);
Розділяємо текст у 140 символів для Twitter
Можливо ви знаєте, що Twitterприймає повідомлення довжиною трохи більше 140 символів. Якщо у вас є плани організувати взаємодію своєї програми з популярним соціальним сайтом повідомлень, то функція, яка обрізає повідомлення до 140 символів, напевно, прийде вам до двору.
Function split_to_chunks($to,$text)( $total_length = (140 - strlen($to)); $text_arr = explode(" ",$text); $i=0; $message=""; foreach ($text_arr as $word)( if (strlen($message[$i] . $word . " ")<= $total_length){ if ($text_arr == $word){ $message[$i] .= $word; } else { $message[$i] .= $word . " "; } } else { $i++; if ($text_arr == $word){ $message[$i] = $word; } else { $message[$i] = $word . " "; } } } return $message; }
Видаляємо URL з рядка
Багато людей залишають у коментарях блогу URL, щоб отримати трафік або організувати зворотний зв'язок. Такі посилання забруднюють блог і можуть стати причиною розладів власника у разі їхньої великої кількості. Тож наступна функція буде дуже корисною!
$string = preg_replace("/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*/ i", "", $string);
Конвертуємо рядок у склад
Потрібно генерувати склад (для постійного посилання), який буде сумісний із завданнями SEO? Наступна функція приймає рядок як параметр і повертає сумісний із завданнями SEO склад. Просто та ефективно!
Function slug($str)( $str = strtolower(trim($str)); $str = preg_replace("/[^a-z0-9-]/", "-", $str); $str = preg_replace ("/-+/", "-", $str);
Парсинг файлу CSV
CSV (Coma separated values – значення, розділені комою) файли – простий спосіб для зберігання та передачі даних, а парсинг таких файлів у PHP виконується надзвичайно просто. Не вірите? Наступний код демонструє обробку CSV файлу:
$fh = fopen("contacts.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) ( echo "Contact: ($line)"; )
Пошук рядка в іншому рядку
Якщо рядок міститься в іншому рядку і вам потрібно знайти його, то завдання вирішується просто:
Function contains($str, $content, $ignorecase=true)( if ($ignorecase)( $str = strtolower($str); $content = strtolower($content); ) return strpos($content,$str) ? true: false;
Перевіряємо, що рядок починається з певного шаблону
Деякі мови програмування, наприклад Java, мають метод/функцію startWith, яка дозволяє перевіряти, чи починається рядок із певного шаблону. На жаль, PHP не має такої простої вбудованої функції.
Тим не менш, ми можемо зробити її для себе, причому дуже просто::
Function String_Begins_With($needle, $haystack) ( return (substr($haystack, 0, strlen($needle))==$needle); )
Виділяємо email з рядка
Коли дивувалися, як спамери отримують ваші email адреси? Все просто. Вони беруть веб-сторінку (наприклад, з форуму) і проводять парсинг html коду для виділення emails адрес. Нижче наведений код отримує рядок як параметр і друкує всі email, що містяться в ньому. Будь ласка, не використовуйте цей код для спаму!
Function extract_emails($str)( // Регулярний вираз, який витягує всі email з рядка: $regexp = "/()+\@(()+\.)+((2,4))+/i"; preg_match_all ($regexp, $str, $m); return isset($m) ? array(); [email protected]Перевіряємо інші формати: [email protected]; foobar
strripos - Відображати позицію останньої аварії з випадку-інсенсітивного substring in a string
Description
Відображається numerical position of last occurrence of needle in the haystack string.
Unlike the strrpos(), strripos() is case-insensitive.
Parameters
The string до search in.
Якщо ліжко не є string, він спрямований на integer і застосовується як звичайне значення character. Цей behavior is deprecated як PHP 7.3.0, і йдеться про це є високорозгорнуті. Depending on the intended behavior, needle should either be explicitly cast to string, або explicit call to chr() should be performed.
Якщо cero або позитивно, дослідження виконано лівим до правого skipping перші offset byty haystack .
Якщо negative, search is performed right to left skipping the last offset bytes of haystack and searching for first occurrence of needle .
Це ефективно дивитися на останній випадок греблі до останніх offset bytes.
Return Values
Поверніть позицію, де сідла існують відносно до початку статевої мети (залежно від пошуку direction or offset).
Note: String positions start at 0, and not 1.
Returns FALSE if the needle was not found.
Warning
Ця функція може бути відновлена Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE. Подивіться розділ на Booleans для більше інформації. Використовуйте === оператор для випробування зворотного значення цієї функції.
Examples
Example #1 A simple strripos() example
$haystack = "ababcd";
$needle = "aB";
$pos = strripos ($haystack, $needle);
if ($pos === false ) (
echo "Sorry, we did not find ($needle) in ($haystack)" ;
) else (
echo "Congratulations!\n" ;
echo "Виставляємо останні ($needle) в ($haystack) на позиції ($pos)" ;
}
?>
Функція PHP strpos використовується для пошуку підрядка в заданому рядку. Вона повертає числове значення першого входження заданого на пошук підрядка.
Синтаксис для використання strpos
PHP функція strpos використовується так:
$position = strpos($given_string, $search_string);
Примітка: Під час пошуку за допомогою функції strpos регістр має значення. Так що пошук за ключовими словами "Test" та "test" дасть різні результати.
Відлік позиції починається з 0 , а чи не 1 .
На прикладі демо-версій я продемонструю використання цієї функції для пошуку заданого підрядка і значення, що вводиться користувачем.
Простий приклад використання функції strpos
Перегляньте наступний приклад, в якому я використовував задані для пошуку значення, щоб продемонструвати роботу функції strpos PHP :
Переглянути онлайн демо-версію та код
Код PHP:
"; echo " The given substr found at: $posistion"; ) ?>
strpos PHP приклад:
string contains the search term: 'strpos'! Given substring found at: 10
Приклад використання strpos для пошуку терміну, що вводиться користувачем.
Цей метод може бути корисним у певних сценаріях. Наприклад, коли у форму не дозволяється вводити певні слова.
Крім цього, можна перевірити, чи міститься слово, задане користувачем на пошук, у вихідному рядку. Виходячи з цього, можна вивести певні результати як відповіді.
У цій демо-версії користувач може ввести термін у текстове поле. Після натискання кнопки запускається функція strpos, щоб перевірити, чи містить вихідний рядок підрядок. На екран буде виводитись відповідне повідомлення:
Для демо-версії я використав наступний вихідний рядок:
$source_string = "У цьому Demo, ми використовуємо користувача, що встановлює пошуковий термін до перевірки, якщо string міститься в пошукових термінах або не використовує strpos!";
Спробуйте ввести різні літери або слова для пошуку, щоб перевірити, чи функція поверне значення false . Крім цього, спробуйте ввести терміни великими або маленькими літерами, щоб побачити різницю.
Для цього був використаний наступний приклад PHP strpos utf 8 :
"; if ($posistion === false) ( echo "Це джерело джерела не містить: "$search_term"!"; ) else ( echo "The string contains the search term: "$search_term"!"; echo " The given substring found at: $posistion"; ) echo "