Php controleert op voorkomen in een string. PHP: werken met strings. PHP-stringfuncties. Een subtekenreeks zoeken met de functie preg_match

Laten we zeggen dat we een substring in een string moeten vinden met behulp van php.

Om dit probleem op te lossen zijn verschillende tools geschikt.

Een subtekenreeks zoeken met de strpos-functie

De functie strpos retourneert de positie van de eerste keer dat een subtekenreeks voorkomt.

$mijnstring = "abc"; $vind mij = "een"; $pos = strpos($mijnstring, $vindmij); // Merk op dat === wordt gebruikt. Het gebruik van == levert niet het juiste resultaat op // omdat "a" op positie nul staat. if ($pos === false) ( echo "De string "$findme" is niet gevonden in de string "$mystring""; ) else ( echo "De string "$findme" is gevonden in de string "$mystring" "; echo " in positie $pos"; )

De functie retourneert het serienummer van het eerste teken van de subtekenreeks in de brontekenreeks, of false als er niets wordt gevonden.

Er is een hoofdletterongevoelige analoog voor deze functie: stripos

Een andere functie voor deze taak: strrpos. Er wordt gezocht naar het laatste exemplaar van de subtekenreeks.
Het kent uiteraard ook een hoofdletterongevoelige variant: strripos

Als de strpos-functie niet geschikt is voor uw doel, zoek dan een ander hulpmiddel.
Er zijn ook veel functies voor het werken met strings waar je meer over moet weten: functies voor het werken met strings.

Een subtekenreeks zoeken met de functie preg_match

Deze functie zoekt naar een subtekenreeks met behulp van een reguliere expressie.

Een reguliere expressie is een patroon dat wordt vergeleken met een string. Eén sjabloon kan op veel verschillende lijnen tegelijk passen.

Ze zijn handig als u niet op een specifieke subtekenreeks wilt zoeken, maar alle tekenreeksen wilt vinden waarvan de eigenschappen zijn beschreven met behulp van een reguliere expressie. Als u dit onderwerp kent, vergroot u uw vermogen om met snaren te werken aanzienlijk.

Websites kunnen worden onderverdeeld in statisch en dynamisch. Na het beheersen van HTML en CSS, waarmee je een mooi visitekaartje op internet kunt maken, denken veel mensen na over hoe ze een dynamische website in PHP kunnen maken. Tegelijkertijd moet de lay-outontwerper er rekening mee houden dat hij nu webprogrammering begint te studeren: de principes van het werken met de site zullen anders zijn. Een van de eerste problemen waarmee een beginner in PHP wordt geconfronteerd, is het werken met strings, het lezen en verwerken ervan.

Het is de moeite waard om op te merken dat PHP een groot aantal methoden heeft, dus je zou ze moeten leren met de eenvoudigste manipulaties, zoals het uitvoeren van een string, het zoeken, verkrijgen of vervangen van een substring, het veranderen van hoofdletters en kleine letters en het retourneren van de lengte van een string. Veel functies werken niet goed met Cyrillische tekens. Daarom zijn alle voorbeelden voor de duidelijkheid in het Engels geschreven. Voor Cyrillische tekenreeksen worden dezelfde functies gebruikt, maar met het voorvoegsel mb_ (bijvoorbeeld mb_strpos()). Voordat u analogen gebruikt, moet u de regel in php.ini verwijderen; extension=php_mbstring.dll, door simpelweg de puntkomma te verwijderen.

Een string maken en uitvoeren

We zullen de uitvoer van een string naar het scherm analyseren met behulp van de bekende echo-taalconstructie. De programmeur kan de regel onmiddellijk uitvoeren:

echo "Dit is een nieuwe regel"

of maak eerst een variabele en druk deze vervolgens af op het scherm:

$str = "Dit is een nieuwe regel";

Als u meerdere regels in één wilt weergeven, gebruik dan aaneenschakeling:

echo "Dit". "Nieuw". "Lijn";

$str1 = "Dit";

$str2 = "Nieuw";

$str3 = "String";

echo $str1. $str2 . $str3;

In het laatste geval wordt het scherm weergegeven Dit is NewLine. Er kan onmiddellijk een spatie worden toegevoegd bij het aanroepen van echo:

echo $str1. " ". $str2 . " ". $str3;

In dit geval verschijnt op het scherm: “Dit is een nieuwe regel.” Aaneenschakeling is niet alleen mogelijk tijdens de uitvoer, maar ook bij het maken van een string:

$str1 = "Dit";

$str2 = "Nieuw";

$str3 = "String";

$tekenreeks = $str1 . " ". $str2 . " ". $str3;

echo $string;

Echo geeft zowel Cyrillisch als Cyrillisch weer. Als een van de variabelen een getal bevatte, wordt dit getal tijdens het samenvoegen omgezet in de overeenkomstige string:

$som = $i + $i; //nu bevat $sum het getal 4

echo $i. " + " . $ik. " = " . $som;

Het scherm toont: "2 + 2 = 4".

Service-symbolen

Laten we zeggen dat een string is gedefinieerd met ($string = "Like this"). Dan kunt u absoluut veilig controlereeksen gebruiken:

  • \n voert een regeldoorvoer uit;
  • \r retourvervoer;
  • \" ontsnapt aan dubbele aanhalingstekens:
    • echo "String met \"dubbele\" aanhalingstekens"; //String met dubbele aanhalingstekens
  • \$ ontsnapt aan de dollar;
  • \\ ontsnapt aan een backslash.

Er zijn nog veel meer reeksen, ze zijn allemaal te vinden in de officiële PHP-documentatie.

Hoe u de positie kunt vinden van de eerste keer dat een subtekenreeks voorkomt

Laten we zeggen dat we een eenvoudige regel hebben:

We hebben ook twee regels met namen:

$name = "Jemelyan";

$anotherName = "Katherine";

We moeten weten of de eerste regel deze twee namen bevat. Gebruik hiervoor de functie strpos($str, $search). Het retourneert de positie van de gezochte subtekenreeks, $search, als die tekenreeks voorkomt in het origineel, $str. Anders retourneert de functie de Booleaanse waarde false. Zo zal strpos($string, $anotherName) false retourneren, terwijl strpos($string, $name) een geheel getal retourneert. De code zal er als volgt uitzien (we zullen de versie schrijven wanneer de positie op het scherm wordt weergegeven):

$string = "Mijn naam is Yemelyan en ik ben 27 jaar oud";

$name = "Jemelyan";

$anotherName = "Katherine";

echo strpos($string, $anotherName); //zal false afdrukken

echo strpos($string, $naam); // zal de positie afdrukken van de eerste keer dat de subtekenreeks voorkomt

Houd er rekening mee dat de regelnummering begint vanaf nul, dat wil zeggen dat in ons geval op de laatste regel het getal 11 wordt weergegeven (spaties tellen ook mee).

Het vinden van de positie van de laatste keer dat een subtekenreeks voorkomt en de valkuilen

Als de functie strpos() de positie van het eerste exemplaar retourneert, zoekt de inverse functie strrpos() naar het laatste exemplaar van de subtekenreeks.

Er zijn enkele valkuilen verbonden aan het starten van nummering. Dit is het overwegen waard: in PHP kan het werken met strings gecompliceerd zijn door beperkingen in vergelijkingen. Het is dus beter om de vergelijkingsoperator met ontkenning niet te gebruiken: strpos($str, $search)!=false. In elke versie van PHP werken voorbeelden met een dergelijke gelijkwaardigheid mogelijk niet correct, omdat de regelnummering begint bij nul, en in de logische interpretatie is 0 onwaar. Dit geldt ook voor de functie strrpos().

Hoe u het aantal keren dat een subtekenreeks voorkomt kunt vinden

Vaak moet u niet de positie vinden van de eerste of laatste keer dat een subtekenreeks in een tekenreeks voorkomt, maar het totale aantal ervan. Om dit te doen, gebruikt u de functie substr_count(), die ten minste twee variabelen verwerkt: substr_count($str, $search). Retourneert een geheel getal. Als het nodig is om het zoekgebied per string te verkleinen, worden er nog twee variabelen aan de functie doorgegeven: respectievelijk het begin en het einde van de string. Dat wil zeggen dat de functie in dit geval als volgt wordt aangeroepen: substr_count($str, $search, $start, $end). De functie zoekt naar de substring $search in het interval van $start tot $end van de bronstring $str. Als de string niet wordt gevonden, retourneert de functie nul.

Hoe de hoofdlettergebruik van een string in PHP te veranderen: voorbeelden

Het veranderen van hoofdlettergebruik wordt vaak gebruikt om strings te vergelijken. Laten we zeggen dat de gebruiker de naam van de oppergod in het programma moet invoeren. Er is een optie "Eén", waarmee het antwoord van de gebruiker wordt vergeleken. Als de ingevoerde tekst niet overeenkomt met de bestaande tekst (de gebruiker schrijft bijvoorbeeld “één” of “EEN”), retourneert het programma false in plaats van true. Om dit te voorkomen wordt de case change-functie gebruikt. Dit wordt vaak gebruikt als een PHP-site tags heeft: in plaats van honderden varianten van het woord "persoonlijk" ("Persoonlijk", "persoonlijk", "PERSONEEL", enz.) is er slechts één tag in kleine letters.

De functie strtolower() verandert hoofdletters in kleine letters. Laten we zeggen dat er een regel $catName = "Fluffy" is. De functie strtolower($catName) retourneert de string "fluffy". U kunt hoofdletters wijzigen in hoofdletters met de functie strtoupper().

Hoe de lengte van een string in PHP te vinden: werken met functies

Vaak moet je de lengte van een touwtje vinden. In PHP kan het werken met dit soort strings bijvoorbeeld nodig zijn bij het maken van een lus. Om naar een string te zoeken, gebruikt u de functie strlen(), die een getal retourneert: het aantal tekens. We mogen niet vergeten dat het laatste teken het getal strlen($str)-1 zal hebben, aangezien de nummering vanaf nul begint.

Een substring verkrijgen en vervangen in PHP: werken met strings

Het verkrijgen van een substring wordt gedaan door de functie substr() , die twee of drie argumenten kan hebben: substr($str, $start, $end). Laten we zeggen dat we $string = "Fluffy cat" hebben en we willen de substring van het tweede tot en met het vierde teken krijgen. Omdat de nummering vanaf nul begint, ziet de variabele met deze substring er als volgt uit: $newString = substr($string, 1, 4). Als we $newString = substr($string, 1) invoeren, krijgen we een substring vanaf het tweede tot het laatste teken (dat wil zeggen: "luffy"). Deze code is identiek aan de volledige stringcode die strlen(): substr($string, 1, strlen($string)).

Om een ​​subtekenreeks te vervangen, gebruikt u de functie str_replace(), die drie variabelen nodig heeft: str_replace($subStr, $newSub, $str). In tegenstelling tot veel andere functies werkt str_replace() correct met Cyrillische tekens en heeft het geen analoog met een voorvoegsel. Voorbeeld:

$str = "Het is verschrikkelijk weer vandaag!";

$newStr = str_replace("verschrikkelijk", "geweldig", $str); //Heerlijk weer vandaag!

Een string omzetten in een getal

Iedereen die webprogrammering leert, moet vroeg of laat een string omzetten in een getal. Om dit te doen worden twee vergelijkbare functies gebruikt: intval() en floatval(), die elk één $string-variabele gebruiken. Ze verschillen alleen van elkaar in het type gegevens dat wordt geretourneerd: intval() retourneert een geheel getal, en floatval() retourneert een getal met drijvende komma.

Om zowel intval() als floatval() te gebruiken, moet de string beginnen met cijfers, en deze zullen worden omgezet in een getal. Als cijfers worden gevolgd door een reeks letters, worden deze eenvoudigweg genegeerd. Als de string met letters begint, zal het gebruik van de functie nul retourneren. Idealiter zou de regel alleen cijfers moeten bevatten.

Een getal naar een string converteren

Vaak moet je getallen omzetten in een string. Stel dat u een half getal moet nemen en dat moet kwadrateren (controleer bijvoorbeeld of de gelijkheid waar is: 88 x 88 + 33 x 33 = 8833). In dit geval wordt de functie strval() gebruikt, die een string met een getal retourneert. Hierna kunt u alle andere acties uitvoeren met de nieuwe string: wijzigen, zoeken naar een voorkomen van een substring en andere functies. Indien nodig kan de string weer worden omgezet in een getal met behulp van de hierboven beschreven methode.

In het artikel werd slechts een klein deel van alle functies met betrekking tot strings onderzocht. Sommige onbeschreven functies werken met symbolen, maar de meeste zijn vanwege specificiteit niet in het materiaal opgenomen. Om vertrouwd te raken met deze functies, moet u doorgaan met het lezen van de officiële PHP-documentatie, die de nieuwste informatie weergeeft.

Zoekt de eerste keer dat een teken in een tekenreeks voorkomt.

Syntaxis:

String strchr(string hooiberg, stringnaald)

Deze functie werkt op dezelfde manier als de functie strstr().

Bepaalt de afwezigheid van leidende tekens in een tekenreeks.
Syntaxis:

Int strcspn(tekenreeks str1, tekenreeks str2)

De functie strspn() retourneert de lengte van het initiële fragment van de string str1, dat geheel uit andere tekens bestaat dan die gevonden in de string str2.

strpbrk()

Zoek een tekenreeks voor elk teken uit een bepaalde set (PHP5)

Syntaxis:

String strpbrk (string hooiberg, string char_list)

strpbrk() zoekt in de hooibergreeks naar tekens in de char_list en retourneert de tekenreeks beginnend op de positie waar het teken werd gevonden (of FALSE als het teken niet werd gevonden). De parameter char_list is hoofdlettergevoelig.

$text = "Dit is een eenvoudige tekst.";

echo strpbrk($text, "mi"); // Zal produceren "is is een eenvoudige tekst omdat." het teken "i" zal als eerste voorkomen

echo strpbrk($text, "S");// Zal "Eenvoudige tekst." opleveren, omdat tekens zijn hoofdlettergevoelig
?>

Zoeken naar de eerste keer dat een subtekenreeks in een tekenreeks voorkomt.
Syntaxis:

String strstr(string hooiberg, stringnaald)

De functie strstr() retourneert het gedeelte van de tekenreeks dat is opgegeven in de parameter hooiberg, beginnend met het eerste fragment dat is opgegeven in de parameter naald en eindigend met het einde.

$e-mail = " [e-mailadres beveiligd]";
$domein = strstr($email, "@");
// of $domein = strstr($email, ord("@"))
echo $domein;
// zal @mail.ru weergeven

Zoeken naar de eerste keer dat een subtekenreeks voorkomt, ongevoelig voor hoofdletters en kleine letters.
Syntaxis:

String strstr(string hooiberg, string naald)

De functie stristr() retourneert het gedeelte van de tekenreeks dat is opgegeven in de parameter hooiberg, beginnend bij het eerste fragment dat is opgegeven in de parameter naald en eindigt met het einde.
Indien dit niet lukt, wordt false geretourneerd.
Deze functie is hoofdletterongevoelig.
Als de naald geen string is, wordt de waarde geconverteerd naar een geheel getal en gebruikt als code voor het gezochte teken.

Het zoeken naar het laatste exemplaar van een subtekenreeks.
Syntaxis:

String strrchr(string hooiberg, stringnaald)

De functie strrchr() retourneert het gedeelte van de tekenreeks dat is opgegeven in de parameter hooiberg, beginnend met het laatste fragment dat is opgegeven in de parameter naald en eindigend.
Indien dit niet lukt, wordt false geretourneerd.
Deze functie is hoofdlettergevoelig.
Als de naald geen string is, wordt de waarde geconverteerd naar een geheel getal en gebruikt als code voor het gezochte teken.

// haal de laatste directory op in $PATH
$dir = substr(strrchr($PATH, ´), 1);
// en hier krijgen we alles na het laatste regeleinde$text = "text 1nText2nText3";
echo substr(strrchr($tekst, 10), 1);

Zoekt de positie van de eerste keer dat een subtekenreeks in een bepaalde tekenreeks voorkomt.
Syntaxis:

Int strpos(string waar, string wat [, int fromwhere])

De functie strpos() probeert de substring te vinden wat er in de string stond en retourneert, indien succesvol, de positie (index) van deze substring in de string.
Het eerste teken van de regel heeft index 0. De optionele parameter fromwhere kan worden opgegeven als de zoekopdracht niet vanaf het begin van de regel moet worden uitgevoerd, maar vanaf een andere positie. In dit geval moet deze positie worden doorgegeven aan vanwaar. Als de subtekenreeks niet kan worden gevonden, retourneert de functie false.

If(strpos($text, "a")===false) echo "Niet gevonden!";
// Controleer: drie gelijktekens

Vindt de positie van de eerste keer dat een subtekenreeks voorkomt in een gegeven tekenreeks, niet hoofdlettergevoelig.
Syntaxis:

Int stripos(string waar, string wat [, int fromwhere])

De functie stripos() probeert de substring te vinden wat er in de string stond en retourneert, indien succesvol, de positie (index) van deze substring in de string.
In tegenstelling tot strpos() is deze functie niet hoofdlettergevoelig. Het eerste teken van de regel heeft index 0.
De optionele parameter fromwhere kan worden opgegeven als de zoekopdracht niet vanaf het begin van de regel moet worden uitgevoerd, maar vanaf een andere positie.
In dit geval moet deze positie worden doorgegeven aan vanwaar. Als de subtekenreeks niet kan worden gevonden, retourneert de functie false.
Als de parameter what geen tekenreeks is, wordt de waarde ervan geconverteerd naar een geheel getal en gebruikt als code voor het teken waarnaar wordt gezocht.

$mijnstring1 = "xyz";
$mijnstring2 = "ABC";

$pos1 = stripos($mijnstring1, $vindmij);
$pos2 = stripos($mijnstring2, $vindmij);

// Natuurlijk staat "a" niet in "xyz"
if ($pos1 === false) (
echo "String "$findme" niet gevonden in string "$mystring1"";
}

// Merk op dat === wordt gebruikt. Het gebruik van == levert niet het juiste resultaat op
// resultaat, aangezien "a" op positie nul staat.if ($pos2 !== false) (
echo ""$findme" gevonden in "$mystring2" op positie $pos2";
}
?>

Opmerking: De functie stripos() kan worden gebruikt om naar gegevens in binaire vorm te zoeken.
Ondersteuning: PHP5

Vindt de laatste positie in de gegeven string die het gegeven fragment bevat.
Syntaxis:

Int strrpos(string waar, string wat)

Deze functie doorzoekt de waar-tekenreeks naar de laatste positie waarin het wat-teken voorkwam (if what is
reeks van meerdere tekens, waarna alleen de eerste wordt gedetecteerd, de rest speelt geen enkele rol).

Als het teken dat u zoekt het eerste in de string is of helemaal niet aanwezig is, retourneert de functie 0.

Als het gezochte teken niet wordt gevonden, wordt false geretourneerd.

substr_count

Vindt het aantal keren dat een fragment in een string voorkomt.
Syntaxis:

Int substr_count(string waar, string wat)

De functie substr_count() retourneert het aantal welke fragmenten aanwezig zijn in de waar-reeks.

Echo substr_count("www.spravkaweb.ru", ".");
// Afdrukken 3

Bepaalt de aanwezigheid van leidende tekens in een tekenreeks.
Syntaxis:

Int strspn(tekenreeks str1, tekenreeks str2)

De functie strspn() retourneert de lengte van het initiële fragment van de string str1, dat volledig bestaat uit tekens die in de string str2 voorkomen.

Echo strspn("www.spravkaweb.ru", "abc");
// Afdrukken 3

stripos - Zoek de positie van de laatste keer dat een hoofdletterongevoelige subtekenreeks in een tekenreeks voorkomt

Beschrijving

Zoek de numerieke positie van de laatste keer dat de naald in de hooibergreeks voorkomt.

In tegenstelling tot de strpos(), stripos() is hoofdletterongevoelig.

Parameters

De tekenreeks waarin moet worden gezocht.

Als de naald geen string is, wordt deze omgezet naar een geheel getal en toegepast als de ordinale waarde van een teken. Dit gedrag is verouderd vanaf PHP 7.3.0 en het gebruik ervan wordt ten zeerste afgeraden. Afhankelijk van het beoogde gedrag moet de naald expliciet naar string worden gegoten, of expliciet worden aangeroepen chr()

moet worden uitgevoerd.

Indien negatief, wordt de zoekopdracht van rechts naar links uitgevoerd, waarbij de laatste offsetbytes van de hooiberg worden overgeslagen en wordt gezocht naar de eerste keer dat naald voorkomt.

Dit zoekt effectief naar het laatste optreden van de naald vóór de laatste offsetbytes.

Waarden retourneren

Geeft de positie terug waar de naald zich bevindt ten opzichte van het begin van de hooibergreeks (onafhankelijk van de zoekrichting of offset).

Opmerking: Stringposities beginnen bij 0, en niet bij 1.

Retouren ONWAAR als de naald niet werd gevonden.

Waarschuwing

Deze functie retourneert mogelijk Booleaanse waarde ONWAAR, maar kan ook een niet-Booleaanse waarde retourneren die resulteert in ONWAAR. Lees het gedeelte over Booleans voor meer informatie. Gebruik de operator === om de retourwaarde van deze functie te testen.

Voorbeelden

Voorbeeld #1 Een simpel stripos() voorbeeld

$hooiberg = "ababcd" ;
$naald = "aB" ;

$pos = strripos ($hooiberg, $naald);

if ($pos === false ) (
echo "Sorry, we hebben ($needle ) niet gevonden in ($hooiberg )" ;
) anders (
echo "Gefeliciteerd!\n" ;
echo "We vonden de laatste ($needle ) in ($hooiberg ) op positie ($pos )" ;
}
?>

De strpos()-functie in PHP is een van de meest gebruikte bij het verwerken van stringgegevens. Hiermee kunt u de positie bepalen vanwaar de gewenste substring in de bronstring verschijnt. Om een ​​adequaat resultaat te verkrijgen, moet tegelijkertijd rekening worden gehouden met een aantal subtiliteiten.

Invoer- en uitvoerparameters

Over het algemeen ziet de syntaxis van de PHP strpos()-functie er als volgt uit:

Gemengde strpos (string $string , mixed $substring[, int $offset = 0 ])

De invoer heeft twee vereiste argumenten en één optioneel argument:

  • De bronreeks is $string, waarin de zoekopdracht zal worden uitgevoerd.
  • De subtekenreeks die u zoekt is $substring. Deze parameter is van het type gemengd. Dit betekent dat de functie naast het tekenreeksgegevenstype elk ander gegevenstype kan accepteren. In dit geval wordt het argument omgezet naar een geheel getal en verwerkt als een tekencode.
  • Een optionele parameter die de offset specificeert: $offset. Standaard wordt de zoekopdracht uitgevoerd vanaf het begin van $string en is de offset 0. Als u een negatieve offset definieert, wordt deze geteld vanaf het einde van de string.

De PHP strpos() functie retourneert de positie waarop $substring is opgenomen in $string. Als er meerdere van dergelijke voorvallen zijn, wordt alleen de positie van de eerste geretourneerd.

Als er geen overeenkomsten zijn, is de uitvoer de Booleaanse waarde false.

Kenmerken van werk

Bij het zoeken naar de positie van een substring is het belangrijk om er rekening mee te houden dat de karakternummering vanaf nul begint. Daarom is 0 een van de juiste retourwaarden.

Bij een losse vergelijking wordt 0 omgezet naar een Booleaans type, wordt onwaar en kan worden geïnterpreteerd als de afwezigheid van gebeurtenissen. Daarom is het erg belangrijk om strikte gelijkheid (===) te gebruiken, rekening houdend met het soort waarden dat wordt vergeleken.

Bovendien is strpos() een voorbeeld van een hoofdlettergevoelige PHP-functie.

Voorbeelden van gebruik

Voorbeeld 1. Eenvoudig voorkomen. Je moet de positie vinden waar de substringsleutel in de stringapen verschijnt.

Voorbeeld 2. Geen gebeurtenissen. Als u de zoekreeks wijzigt in KEY, zal de PHP strpos()-functie geen overeenkomst vinden omdat deze hoofdlettergevoelig is. Het resultaat is de Booleaanse waarde false.

Voorbeeld 3. Invoer op nulpositie. Het is belangrijk om strikte gelijkheid te gebruiken bij het controleren van het resultaat van een functie, anders krijgt u mogelijk een onjuist resultaat.

De eerste twee controles zullen vaststellen dat er geen gebeurtenissen voorkomen, ook al is de levensduur van de substring opgenomen in de oorspronkelijke lifehack van de string.

Voorbeeld 4: Offset de startpositie met behulp van de parameter $offset.

Nadat de offset op 3 is ingesteld, begint het zoeken bij het teken "e".