Намерете срещане на php низ. Намиране на подниз в низ с помощта на PHP

PHP предлага различни опции за намиране на низове в други низове. Има обичайните функции. Възможно е да се използват регулярни изрази. Разработчикът може да разработи своя собствена версия за търсене на информация, при спазване на правилата на синтаксиса.

Търсенето на низове не се ограничава до потвърждаване на присъствието на желания знак или низ на желаното място. Един обект може да действа като низ - това е по-обемна информационна концепция от просто низ. Търсенето е особено ефективно, когато моментът на откриване е придружен от незабавно решение, вместо да изисква допълнителна обработка.

Основна функционалност за търсене

Търсене - функция strpos(). Неговият резултат е или булева стойност, или позицията на срещане на търсеното (втори параметър) в низа (първи параметър) от позицията (трети параметър). Ако последният параметър не е зададен, търсенето се извършва от нулевата позиция на низа.

В този пример търсенето на PHP в низ е показано с помощта на един знак като пример. Можете да използвате низ вместо символ. PHP не ограничава програмиста в размера на низовете, но разумните ограничения са от съществено значение.

Можете да търсите низове в рамките на низовете по начин, чувствителен към малки и главни букви, от първото или последното срещане и да използвате регулярни изрази. Както във всички други случаи, кодирането на страницата, на която се намира скриптът, е от съществено значение.

В някои случаи има смисъл да се използва вариантът iconv_strpos(), а не просто strpos(). В по-голямата част от случаите търсенето на подниз в PHP низ ще даде идеално точни резултати: достатъчно е да запазите кодирането на страницата и низа в едно и също кодиране.

Характеристики на стандартния подход

Ако търсенето на подниз в PHP низ няма резултат: това, което търсите, не съществува и резултатът ще бъде булева стойност. Ако обаче търсеният подниз започва от нулева позиция, това трябва да се подчертае в операциите за сравнение и анализ на резултата. Когато резултатът е 0, той не е много по-далеч от резултата false.

За разлика от JavaScript, PHP е по-консервативен, когато става въпрос за низове и до днес низовете са си низове. Работата с тях са низови функции: от прости нива на strpos до сложни, използващи регулярни изрази.

Трябва да търсите за:

  • вземете решение за посоката на алгоритъма;
  • заменете това, което търсите с нещо друго;
  • проверка на събитието;
  • увеличаване на статистическия брояч и др.

Това е обичайната логика на алгоритъма; JavaScript отиде по-далеч и разпозна "низовете" като обекти. Но на практика само признаването не е достатъчно. Ако се абстрахираме от понятието „низ“ и го разберем като реален обект, PHP ще ни позволи да формулираме въпроса „търсене на низ в низ“ в контекста на реален метод, например ябълка може да бъде узряло, не само когато е червено.

Класическото търсене на думата „червено“ в описание на ябълка не гарантира надежден отговор за зрелостта на плода. Ако ябълката е представена не от низ, а от обект, тогава PHP ще търси низа в низ не като strpos, а като метод на реален обект. Въпреки това, няма гаранция, че функцията strpos ще бъде използвана в тялото на метода.

Стандартни функции в нестандартни решения

Характеристика на обичайната (човешка) обработка на информация: позицията, къде е нещо, има значение, когато това е целта или решението. Във всички останали случаи няма значение къде се намира нещо, важно е да е обозначено и да е основа за по-нататъшни действия.

Търсенето се извършва индиректно във функциите trim, str_replace и др. Налична е интересна опция за търсене, когато се използва едновременно разрушаване/разрушаване и манипулиране на масиви.

Ако използвате цялата функционалност на PHP, търсенето в низ лесно придобива семантика, надхвърля обичайния синтаксис и се превръща в причина да придобиете истински смисъл. Манипулирането на смисъл е по-познато за човек, по-безопасно за алгоритъм, а трансформирането на низове в обекти е като преход от машинни кодове към света на съвременните езици за програмиране.

Низовете са много важен тип данни, с които трябва постоянно да работите, когато решавате проблеми с уеб разработката. Тази статия описва 10 много полезни техники, които ще улеснят живота на PHP програмиста.

Автоматично премахване на html тагове от низ

Когато използвате формуляри, попълнени от потребителя, понякога трябва да премахнете всички ненужни тагове. Тази задача се решава лесно с помощта на функцията strip_tags():

$text = strip_tags($input, "");

Получаване на текста между $start и $end

Такава функция трябва да бъде в арсенала на разработчика: тя получава оригиналния ред, началото и края и връща текста, който се съдържа между $start и $end.

Функция GetBetween($content,$start,$end)( $r = explode($start, $content); if (isset($r))( $r = explode($end, $r); return $r; ) връщане "")

Трансформиране на URL в хипервръзка

Ако поставите URL във формуляр за коментари в блог на WordPress, той автоматично ще се трансформира в хипервръзка. Ако искате да внедрите същата функционалност на вашия уебсайт или уеб приложение, можете да използвате следния код:

$url = "Жан-Батист Юнг (http://www.webdevcat.com)"; $url = preg_replace("#http://(+)#", " ", $url);

Разделяне на текст в масив от 140 знака за Twitter

Може би знаете това Twitterприема съобщения не по-дълги от 140 знака. Ако имате планове да свържете приложението си с популярен сайт за социални съобщения, тогава функция, която изрязва съобщенията до 140 знака, вероятно ще бъде подходяща.

Функция split_to_chunks($to,$text)( $total_length = (140 - strlen($to)); $text_arr = explode(" ",$text); $i=0; $message=""; foreach ($text_arr като $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|файл):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*/ i", "", $string);

Преобразуване на низ в охлюв

Трябва да генерирате плужек (за постоянна връзка), който е съвместим с целите на SEO? Следната функция приема низ като параметър и връща SEO-съвместим плужек. Просто и ефективно!

Функция slug($str)( $str = strtolower(trim($str)); $str = preg_replace("/[^a-z0-9-]/", "-", $str); $str = preg_replace ("/-+/", "-", $str);

Анализ на CSV файл

CSV (стойности, разделени със запетая) файловете са лесен начин за съхраняване и прехвърляне на данни, а анализирането на такива файлове в PHP е изключително лесно. не ми вярваш Следният код демонстрира обработката на CSV файл:

$fh = fopen("contacts.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) ( echo "Контакт: ($line)"; )

Намиране на низ в друг низ

Ако низ се съдържа в друг низ и трябва да го намерите, тогава проблемът е прост:

Функцията съдържа($str, $content, $ignorecase=true)( if ($ignorecase)( $str = strtolower($str); $content = strtolower($content); ) return strpos($content,$str)? вярно невярно)

Проверка дали даден низ започва с определен модел

Някои езици за програмиране, като Java, имат метод/функция startWith, която ви позволява да проверите дали даден низ започва с определен модел. За съжаление, PHP няма толкова проста вградена функция.
Ние обаче можем да го направим за себе си и то много просто::

Функция String_Begins_With($needle, $haystack) ( return (substr($haystack, 0, strlen($needle))==$needle); )

Подчертавамеимейл от низ

Някога чудили ли сте се как спамерите получават вашите имейл адреси? Просто е. Те вземат уеб страница (например от форум) и анализират html кода, за да извлекат имейл адреси. Кодът по-долу приема низ като параметър и отпечатва всички имейли, съдържащи се в него. Моля, не използвайте този код за спам!

Функция extract_emails($str)( // Регулярен израз, който извлича всички имейли от низ: $regexp = "/()+\@(()+\.)+((2,4))+/i"; preg_match_all ($regexp, $m); return isset($m) : array(); $test_string = "Тестов низ... [имейл защитен]Проверка на други формати: [имейл защитен]; foobar Друга проверка: [имейл защитен] test6example.org [имейл защитен] test8@ example.org test9@!foo!.org foobar "; print_r(extract_emails($test_string));

стррипос - Намерете позицията на последното появяване на подниз без значение за главни и малки букви в низ

Описание

Намерете цифровата позиция на последното появяване на игла в низа на купа сено.

За разлика от strpos(), strripos()е нечувствителен към главни и малки букви.

Параметри

Низът, в който да се търси.

Ако needle не е низ, той се преобразува в цяло число и се прилага като поредна стойност на символ. Това поведение е отхвърлено от PHP 7.3.0 и разчитането на него е силно обезкуражено. В зависимост от планираното поведение, иглата трябва или да бъде изрично прехвърлена към низ, или изрично извикване към chr()трябва да се извърши.

Ако е нула или положителен, търсенето се извършва отляво надясно, като се пропускат първите отместени байтове на купа сено.

Ако е отрицателен, търсенето се извършва отдясно наляво, като се пропускат последните отместени байтове на купа сено и се търси първото появяване на needle.

Това на практика търси последното появяване на игла преди последните отместени байтове.

Върнати стойности

Връща позицията, където съществува иглата спрямо началото на низа от купа сено (независимо от посоката на търсене или отместването).

Забележка: Позициите на низовете започват от 0, а не от 1.

Се завръща НЕВЯРНОако иглата не е намерена.

Внимание

Тази функция може да върне булево значение НЕВЯРНО, но може също да върне небулева стойност, която се оценява на НЕВЯРНО. Моля, прочетете раздела за булеви стойности за повече информация. Използвайте оператора === за тестване на върнатата стойност на тази функция.

Примери

Пример #1 Прост strripos()пример

$haystack = "ababcd" ;
$игла = "aB" ;

$pos = strripos ($купа сено, $игла);

if ($pos === false ) (
echo "Съжаляваме, не намерихме ($needle ) в ($haystack )" ;
) иначе (
echo "Поздравления!\n" ;
echo "Намерихме последната ($needle ) в ($haystack ) на позиция ($pos )" ;
}
?>

1.1K

PHP функцията strpos се използва за намиране на подниз в даден низ. Връща числовата стойност на първото появяване на търсения подниз.

Синтаксис за използване на strpos

Функцията PHP strpos се използва, както следва:

$position = strpos($given_string, $search_string);

Забележка: Когато търсите с функцията strpos, малките и малки букви са чувствителни. Така че търсенето на ключовите думи „Тест“ и „тест“ ще даде различни резултати.

Броенето на позиции започва от 0, а не от 1.

Използвайки демо версии, ще демонстрирам използването на тази функция за търсене на даден подниз и въведена от потребителя стойност.

Прост пример за използване на функцията strpos

Вижте следния пример, където използвах стойности за търсене, за да демонстрирам как работи функцията PHP strpos:


Вижте онлайн демонстрация и код

PHP код:

"; echo " Даденият substr намерен на: $position"; ) ?>

strpos PHP пример:

Низът съдържа думата за търсене: „strpos“! Даденият подниз е намерен на: 10

Пример за използване на strpos за търсене на въведен от потребителя термин

Този метод може да бъде полезен в определени сценарии. Например, когато формуляр не позволява въвеждането на определени думи.

Освен това можете да проверите дали думата, зададена от потребителя за търсене, се съдържа в изходния низ. Въз основа на това можете да изведете определени резултати под формата на отговор.

В тази демонстрация потребителят може да въведе термин в текстово поле. След като се щракне върху бутона, функцията strpos се изпълнява, за да провери дали оригиналният низ съдържа подниз. На екрана ще се покаже следното съобщение:


За демонстрацията използвах следния изходен ред:

$source_string = "В тази демонстрация използвам въведена от потребителя дума за търсене, за да проверя дали низът съдържа дума за търсене или не, като използвам strpos!";

Опитайте да въведете различни букви или думи за търсене, за да видите дали функцията връща false. Освен това опитайте да въведете термини с главни или малки букви, за да видите разликата.

Следният пример на PHP strpos utf 8 беше използван за това:

"; if ($posistion === false) ( echo "Изходният низ не съдържа: "$search_term"!"; ) else ( echo "Низът съдържа думата за търсене: "$search_term"!
"; echo " Даденият подниз е намерен на: $position"; ) echo "

"; } ?>

Можете също така да разгледате примера за PHP маркиране на strpos:



Пълната версия може да се види в изходния код на демонстрационната страница.

Освен това можете да използвате база данни като източник за създаване на система за търсене на вашия уебсайт.

Търсене без разлика на главни и малки букви с помощта на функция stripos

Както споменахме, функцията PHP strpos е чувствителна към главни и малки букви. За да търсите низове независимо от регистъра, използвайте функцията PHP stripos.

Синтаксисът е почти същият като за strpos:

$position = stripos($given_string, $search_string);

Сега ще ви покажа как работи stripos.

Пример за използване на функцията stripos

В тази демонстрация източникът на търсене е следният низ:

$source_string = "Това е ръководство за stripos, което се използва за търсене на низове. Той казва дали даден низ съдържа низ за търсене или не!";

Термин за търсене: $search_term = 'урок';

Уеб сайтовете могат да бъдат разделени на статични и динамични. След усвояването на HTML и CSS, които ви позволяват да направите красива визитна картичка в Интернет, много хора мислят как да създадат динамичен уебсайт в PHP. В същото време дизайнерът на оформление трябва да вземе предвид, че сега започва да изучава уеб програмиране: принципите на работа със сайта ще бъдат различни. Един от първите проблеми, с които се сблъсква начинаещият в PHP, е работата с низове, четенето и обработката им.

Струва си да се отбележи, че PHP има голям брой методи, така че трябва да започнете да ги изучавате с най-простите манипулации, като извеждане на низ, търсене, получаване или замяна на подниз, промяна на регистър и връщане на дължината на низ. Много функции не работят добре със знаци на кирилица. Затова всички примери са написани на английски за яснота. За низове на кирилица се използват същите функции, но с префикс mb_ (например mb_strpos()). Преди да използвате аналози, трябва да разкоментирате реда в php.ini; extension=php_mbstring.dll, като просто премахнете точката и запетая.

Създаване и извеждане на низ

Ще анализираме изхода на низ към екрана с помощта на добре познатата езикова конструкция за ехо. Програмистът може веднага да изведе реда:

echo "Това е нов ред"

или първо създайте променлива и след това я отпечатайте на екрана:

$str = "Това е нов ред";

Ако трябва да покажете няколко реда в един, прибягвайте до конкатенация:

echo "Това" . "Ново". "Линия";

$str1 = "Това";

$str2 = "Ново";

$str3 = "Низ";

ехо $str1. $str2. $str3;

В последния случай екранът ще се покаже Това е NewLine. Интервал може да се добави веднага при извикване на ехо:

ехо $str1. " ". $str2. " ". $str3;

В този случай на екрана ще се покаже: „Това е нов ред“. Конкатенацията е възможна не само по време на извеждане, но и при създаване на низ:

$str1 = "Това";

$str2 = "Ново";

$str3 = "Низ";

$низ = $str1. " ". $str2. " ". $str3;

ехо $низ;

Echo показва както кирилица, така и кирилица. Ако една от променливите съдържа число, тогава по време на конкатенацията това число ще бъде преобразувано в съответния низ:

$сума = $i + $i; // сега $sum съдържа числото 4

ехо $i . "+". $i . " = ". $сума;

Екранът ще покаже: "2 + 2 = 4".

Сервизни символи

Да кажем, че низът е дефиниран с ($string = "Подобно на това"). След това можете абсолютно безопасно да използвате контролни последователности:

  • \n извършва подаване на ред;
  • \r връща превоз;
  • \" избягва двойните кавички:
    • echo "Низ с \"двойни\" кавички"; //Низ с двойни кавички
  • \$ избягва долара;
  • \\ избягва обратна наклонена черта.

Има много повече последователности, всички те могат да бъдат намерени в официалната документация на PHP.

Как да намерите позицията на първото появяване на подниз

Да кажем, че имаме прост ред:

Имаме и два реда с имена:

$name = "Емелян";

$anotherName = "Катрин";

Трябва да знаем дали първият ред съдържа тези две имена. За да направите това, използвайте функцията strpos($str, $search). Той връща позицията на търсения подниз, $search, ако този низ се съдържа в оригинала, $str. В противен случай функцията връща булевата стойност false. Например strpos($string, $anotherName) ще върне false, докато strpos($string, $name) ще върне цяло число. Кодът ще бъде като този (ще напишем версията, когато позицията се покаже на екрана):

$string = "Казвам се Yemelyan и съм на 27 години";

$name = "Емелян";

$anotherName = "Катрин";

echo strpos($string, $anotherName); // ще покаже false

echo strpos($string, $name); //ще отпечата позицията на първото срещане на подниза

Моля, обърнете внимание, че номерирането на редовете започва от нула, т.е. в нашия случай последният ред ще показва числото 11 (интервалите също се броят).

Намиране на позицията на последното срещане на подниз и клопки

Ако функцията strpos() връща позицията на първото срещане, тогава нейната обратна функция strrpos() търси последното срещане на подниза.

Има някои клопки, свързани с началното номериране. Това си струва да се има предвид: в PHP работата с низове може да бъде усложнена от ограничения в сравненията. Така че е по-добре да не използвате оператора за сравнение с отрицание: strpos($str, $search)!=false. Във всяка версия на PHP примерите с такава еквивалентност може да не работят правилно, тъй като номерирането на редовете започва от нула, а в логическата интерпретация 0 е невярно. Това важи и за функцията strrpos().

Как да намерите броя на срещанията на подниз

Често трябва да намерите не позицията на първото или последното появяване на подниз в низ, а общия им брой. За да направите това, използвайте функцията substr_count(), която обработва поне две променливи: substr_count($str, $search). Връща цяло число. Ако е необходимо да се намали областта на търсене чрез низ, тогава към функцията се предават още две променливи: съответно началото и края на низа. Тоест функцията в този случай се извиква така: substr_count($str, $search, $start, $end). Функцията ще търси подниза $search в интервала от $start до $end на оригиналния низ $str. Ако низът не бъде намерен, функцията ще върне нула.

Как да промените регистъра на буквите на низ в PHP: примери

Промяната на регистъра на буквите често се използва за сравняване на низове и да кажем, че потребителят трябва да въведе името на върховния бог в програмата. Има опция "Едно", с която ще бъде сравнен отговорът на потребителя. Ако въведеният текст не съвпада със съществуващия (например, потребителят пише „едно“ или „ЕДНО“), програмата ще върне false вместо true. За да се избегне това, се използва функцията за промяна на регистъра. Това често се използва, ако PHP сайтът има тагове: вместо стотици вариации на думата „личен“ („Личен“, „личен“, „ЛИЧЕН“ и т.н.) има само един таг с малки букви.

Функцията strtolower() променя регистъра на малките букви. Да кажем, че има ред $catName = "Fluffy". Функцията strtolower($catName) ще върне низа "fluffy". Можете да промените главния регистър с помощта на функцията strtoupper().

Как да намерите дължината на низ в PHP: работа с функции

Често трябва да намерите дължината на низ. Например в PHP работата с низове от този вид може да е необходима при създаване на цикъл. За да търсите низ, използвайте функцията strlen(), която връща число - броя на символите. Не трябва да забравяме, че последният знак ще има номер strlen($str)-1, тъй като номерацията започва от нула.

Получаване и заместване на подниз в PHP: работа с низове

Получаването на подниз се извършва от функцията substr(), която може да приеме два или три аргумента: substr($str, $start, $end). Да кажем, че имаме $string = "Fluffy cat" и искаме да получим подниза от втория до четвъртия знак. Тъй като номерирането започва от нула, променливата с този подниз ще изглежда така: $newString = substr($string, 1, 4). Ако въведем $newString = substr($string, 1), ще получим подниз от втория знак до последния (т.е. "luffy"). Този код е идентичен с пълния код на низ, използващ strlen(): substr($string, 1, strlen($string)).

За да замените подниз, използвайте функцията str_replace(), която приема три променливи: str_replace($subStr, $newSub, $str). За разлика от много функции str_replace() работи коректно с кирилицата и няма аналог с префикс. Пример:

$str = "Днес времето е ужасно!";

$newStr = str_replace("ужасно", "прекрасно", $str); //Прекрасно време днес!

Преобразуване на низ в число

Всеки, който учи уеб програмиране, рано или късно трябва да конвертира низ в число. За да направите това, се използват две подобни функции: intval() и floatval(), всяка от които приема една променлива $string. Те се различават един от друг само по вида на върнатите данни: intval() връща цяло число, а floatval() връща число с плаваща запетая.

За да използвате както intval(), така и floatval(), низът трябва да започва с цифри и те ще бъдат преобразувани в число. Ако цифрите са последвани от набор от букви, те просто ще бъдат игнорирани. В случай, че низът започва с букви, използването на функцията ще върне нула. В идеалния случай редът трябва да съдържа само числа.

Преобразуване на число в низ

Често трябва да преобразувате числа в низ. Да речем, ако трябва да вземете половин число и да го повдигнете на квадрат (например проверете дали равенството е вярно: 88 x 88 + 33 x 33 = 8833). В случая се използва функцията strval(), която връща низ с число. След това можете да извършвате всички други действия с новия низ: промяна, търсене на срещане на подниз и други функции. Ако е необходимо, низът може да бъде преобразуван обратно в число, като се използва вече описаният по-горе метод.

Статията разгледа само малка част от всички функции, свързани с низове. Някои неописани функции работят със символи, но повечето не бяха включени в материала поради специфика. За да се запознаете с тези функции, трябва да продължите към четене на официалната документация на PHP, която показва най-новата информация.



Свързани публикации