WiFi      2022.06.23

php karakterlánc elemzése. PHP: stringekkel való munka. PHP karakterlánc függvények. PHP beolvassa a fájlt változóba a fread() segítségével

A webhelyek statikus és dinamikus webhelyekre oszthatók. A HTML és a CSS elsajátítása után, amelyek lehetővé teszik egy gyönyörű névjegykártya készítését az interneten, sokan gondolkodnak azon, hogyan lehet dinamikus webhelyet létrehozni PHP-ben. Ugyanakkor az elrendezéstervezőnek figyelembe kell vennie, hogy most kezdi megtanulni a webprogramozást: az oldallal való munka elvei eltérőek lesznek. Az egyik első probléma, amellyel a PHP-ben kezdők szembesülnek, a karakterláncokkal való munka, azok olvasása és feldolgozása.

Érdemes megjegyezni, hogy a PHP számos metódust tartalmaz, ezért érdemes elkezdeni a tanulást a legegyszerűbb manipulációkkal, mint például egy karakterlánc kiadása, egy részkarakterlánc keresése, lekérése vagy cseréje, kis- és nagybetűk megváltoztatása és a karakterlánc hosszának visszaadása. Számos funkció nem működik jól cirill karakterekkel. Ezért az érthetőség kedvéért minden példa angolul íródott. Cirill karakterláncokhoz ugyanazok a függvények használatosak, de az mb_ előtaggal (például mb_strpos()). Az analógok használata előtt a php.ini fájlban törölnie kell a megjegyzést a következő sorból: extension=php_mbstring.dll, egyszerűen a pontosvessző eltávolításával.

Karakterlánc létrehozása és kiadása

Egy karakterlánc kimenetét a jól ismert echo nyelvi konstrukció segítségével elemezzük a képernyőre. A programozó egyszerre tudja kiadni a karakterláncot:

echo "Ez egy új vonal"

vagy először hozzon létre egy változót, majd nyomtassa ki a képernyőre:

$str = "Ez egy új karakterlánc";

Ha több sort kell megjelenítenie egyben, akkor az összefűzésüket használják:

echo "Ez" . "Új". " Vonal";

$str1 = "Ez";

$str2 = "Új";

$str3 = "karakterlánc";

echo $str1 . $str2 . $str3;

Az utóbbi esetben a képernyő jelenik meg ThisNewLine. Egy szóköz azonnal hozzáadható az echo hívásakor:

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

Ebben az esetben a képernyőn megjelenik: "Ez egy új sor". Az összefűzés nem csak a kimenetnél lehetséges, hanem egy karakterlánc létrehozásakor is:

$str1 = "Ez";

$str2 = "Új";

$str3 = "karakterlánc";

$karakterlánc = $str1 . " ". $str2 . " ". $str3;

echo $string;

Az Echo mindkettőt és cirill betűt is megjelenít. Ha az egyik változó számot tartalmazott, akkor az összefűzés során ez a szám a megfelelő karaktersorozattá alakul:

$összeg = $i + $i; //most a $sum tartalmazza a 4-es számot

visszhang $i . "+". $i . "=" . $összeg;

A képernyőn a következő jelenik meg: "2 + 2 = 4".

Szolgáltatás szimbólumok

Tegyük fel, hogy egy karakterlánc a következővel van definiálva: ($string = "Így"). Ezután biztonságosan használhatja a vezérlőszekvenciákat:

  • \n soremelést végez;
  • \r kocsit ad vissza;
  • \" idézőjelek nélkül:
    • echo "Karakterlánc \"dupla\" idézőjelekkel"; //Karakterlánc "dupla" idézőjelekkel
  • \$ elkerüli a dollárt;
  • \\ kihagyja a fordított perjelet.

Sokkal több szekvencia létezik, amelyek mindegyike megtalálható a hivatalos PHP dokumentációban.

Hogyan találjuk meg egy részkarakterlánc első előfordulásának helyét

Tegyük fel, hogy van egy egyszerű sorunk:

Van még két karakterláncunk nevekkel:

$name = "jemeli";

$anotherName = "Katherine";

Tudnunk kell, hogy az első sor tartalmazza-e ezt a két nevet. Ehhez az strpos($str, $search) függvény szolgál. Visszaadja a keresett $search részkarakterlánc pozícióját, ha ez a karakterlánc szerepel az eredeti $str. Ellenkező esetben a függvény a logikai értéket false adja vissza. Például az strpos($karakterlánc, $másikName) hamis értéket ad vissza, míg az strpos($string, $name) egész számot ad vissza. A kód így lesz (változatot írunk, amikor a pozíció megjelenik a képernyőn):

$string = "A nevem Yemelyan és 27 éves vagyok";

$name = "jemeli";

$anotherName = "Katherine";

echo strpos($karakterlánc, $egyébNév); //false kimenet

echo strpos($karakterlánc, $név); //kiírja a részkarakterlánc első előfordulásának helyét

Figyeljük meg, hogy a sorszámozás nulláról indul, vagyis esetünkben az utolsó sorban a 11-es szám jelenik meg (a szóközök is számítanak).

Egy részkarakterlánc utolsó előfordulásának helyének megtalálása és a buktatók

Ha az strpos() függvény az első előfordulás pozícióját adja vissza, akkor az inverz strrpos() függvénye az alsztring utolsó előfordulását keresi.

A számozás megkezdéséhez itt van néhány buktató. Ezt figyelembe kell venni: PHP munka a karakterláncokkal bonyolult lehet az összehasonlítás korlátai miatt. Tehát jobb, ha nem használjuk a negált összehasonlító operátort: ​​strpos($str, $search)!=false. A PHP bármely verziójában előfordulhat, hogy az ezzel az ekvivalenssel rendelkező példák nem működnek megfelelően, mert a sorszámozás nulláról kezdődik, és a logikai értelmezésben a 0 hamis. Ez vonatkozik a strrpos() függvényre is.

Hogyan találjuk meg egy részkarakterlánc előfordulásának számát

Gyakran nem egy részkarakterlánc első vagy utolsó előfordulásának helyét kell megkeresnie egy karakterláncban, hanem azok teljes számát. Ehhez a substr_count() függvényt használjuk, amely legalább két változót dolgoz fel: substr_count($str, $search). Egy egész számot ad vissza. Ha csökkenteni kell egy karakterlánc keresési területét, akkor két további változót ad át a függvénynek: a karakterlánc elejét és végét. Vagyis a függvényt ebben az esetben így hívjuk: substr_count($str, $search, $start, $end). A függvény megkeresi a $search részkarakterláncot az eredeti $str $start és $end között. Ha a karakterlánc nem található, akkor a függvény nullát ad vissza.

Hogyan változtassuk meg a karakterlánc kis- és nagybetűjét PHP-ben: Példák

A kis- és nagybetűk megváltoztatását gyakran használják karakterláncok összehasonlítására, és Tegyük fel, hogy a felhasználónak be kell írnia a legfőbb isten nevét a programba. A programnak van egy "Egy" opciója, amellyel a felhasználó válaszát összehasonlítja. Ha a beírt szöveg nem egyezik a meglévővel (például a felhasználó "egyet" vagy "ONE"-t ír), akkor a program hamis értéket ad vissza igaz helyett. Ennek elkerülésére esetváltási funkciót használnak. Ezt gyakran használják, ha a PHP webhely címkékkel rendelkezik: a "private" szó több száz változata ("Private", "private", "PERSONAL" stb.) helyett csak egy kisbetűs címke található.

A strtolower() függvény kis- és nagybetűket vált. Tegyük fel, hogy van egy $catName = "bolyhos" karakterlánc. A strtolower($catName) függvény a "fluffy" karakterláncot adja vissza. A kis- és nagybetűket az strtoupper() függvény segítségével nagybetűre változtathatja.

Hogyan lehet megtudni egy karakterlánc hosszát PHP-ben: munka függvényekkel

Gyakran meg akarja találni egy karakterlánc hosszát. Például PHP-ben az ilyen jellegű karakterláncokkal való munkavégzésre szükség lehet egy ciklus létrehozása során. Karakterlánc kereséséhez az strlen() függvényt használjuk, amely egy számot ad vissza – a karakterek számát. Nem szabad megfeledkeznünk arról, hogy az utolsó karakter strlen($str)-1 szám lesz, mivel a számozás nulláról indul.

Alkarakterlánc beszerzése és cseréje PHP-ben: stringek kezelése

A részkarakterlánc beszerzését a substr() függvény végzi, amely két vagy három argumentumot vehet fel: substr($str, $start, $end). Tegyük fel, hogy van egy $string = "bolyhos macska" karakterláncunk, és szeretnénk megkapni az alkarakterláncot a másodiktól a negyedik karakterig. Mivel a számozás nulláról indul, az ezzel a részkarakterlánccal rendelkező változó így fog kinézni: $newString = substr($string, 1, 4). Ha beírjuk a $newString = substr($string, 1), akkor a második karaktertől az utolsóig (vagyis "luffy") kapunk egy részkarakterláncot. Ez a kód megegyezik a teljes strlen(): substr($string, 1, strlen($string)) karakterlánc-kóddal.

Egy részkarakterlánc cseréjéhez az str_replace() függvényt használjuk, amely három változót foglal magában: str_replace($subStr, $newSub, $str). Sok függvénnyel ellentétben az str_replace() megfelelően működik cirill karakterekkel, és nincs előtaggal rendelkező analógja. Példa:

$str = "Szörnyű idő ma!";

$newStr = str_replace("borzasztó", "csodálatos", $str); //Ma csodálatos az idő!

Karakterlánc konvertálása számmá

Mindenkinek, aki webprogramozást tanul, előbb-utóbb le kell fordítania egy karakterláncot számmá. Ehhez két hasonló függvényt használnak: intval() és floatval(), amelyek mindegyike egy $string változót fogad el. Csak a visszaadott adatok típusában különböznek egymástól: az intval() egész számot, a floatval() pedig lebegőpontos számot ad vissza.

Az intval() és a floatval() is megköveteli, hogy a karakterlánc számjegyekkel kezdődjön, amelyeket számmá alakítunk. Ha bármely betűkészlet követi a számokat, akkor azokat egyszerűen figyelmen kívül hagyja. Abban az esetben, ha a karakterlánc betűkkel kezdődik, a függvény használata nullát ad vissza. Ideális esetben a karakterlánc csak számokat tartalmazhat.

Szám konvertálása karakterláncra

A számokat gyakran karakterláncokká kell konvertálni. Tegyük fel, hogy fel kell vennie egy fél számot, és négyzetbe kell tennie (például ellenőrizze, hogy igaz-e az egyenlőség: 88 x 88 + 33 x 33 = 8833). Ebben az esetben az strval() függvényt használjuk, amely egy számot tartalmazó karakterláncot ad vissza. Ezt követően minden egyéb műveletet végrehajthat egy új karakterlánccal: változtatás, részkarakterlánc előfordulásának keresése és egyéb funkciók. Szükség esetén a karakterlánc visszaalakítható számmá a fentebb már leírt módon.

A cikkben a karakterláncokhoz kapcsolódó összes függvénynek csak egy kis részét vettük figyelembe. A le nem írt funkciók egy része szimbólumokkal működik, de a legtöbb konkrétság miatt nem került be az anyagba. Ahhoz, hogy megismerje ezeket a funkciókat, meg kell keresnie a hivatalos PHP dokumentációt, amely naprakész információkat jelenít meg.

A karakterláncok nagyon fontos adattípusok, amelyekkel folyamatosan dolgozni kell a webfejlesztési problémák megoldása során. Ez a cikk 10 nagyon hasznos trükköt ír le, amelyek megkönnyítik a PHP-fejlesztők életét.

A html címkék automatikus eltávolítása egy karakterláncból

A felhasználó által kitöltött űrlapok használatakor néha el kell távolítania az összes felesleges címkét. Ez a feladat könnyen megoldható a strip_tags() függvény segítségével:

$szöveg = strip_tags($bemenet, "");

Szöveg megjelenítése $start és $end között

Egy ilyen függvénynek a fejlesztő arzenáljában kell lennie: felveszi az eredeti karakterláncot, kezdetét és végét, és visszaadja a $start és $end között lévő szöveget.

Függvény GetBetween($content,$start,$end)( $r = explode($start, $content); if (isset($r))( $r = explode($end, $r); return $r; ) Visszatérés ""; )

URL konvertálása hiperhivatkozássá

Ha egy URL-t megjegyzés formájában helyez el egy WordPress blogba, az automatikusan hiperhivatkozássá változik. Ha ugyanazt a funkciót szeretné megvalósítani webhelyén vagy webalkalmazásában, akkor a következő kódot használhatja:

$url = "Jean-Baptiste Jung (http://www.webdevcat.com)"; $url = preg_replace("#http://(+)#", " ", $url);

Szöveg felosztása 140 karakteres tömbre a Twitter számára

Talán tudod Twitter legfeljebb 140 karakter hosszú üzeneteket fogad el. Ha azt tervezi, hogy alkalmazását egy népszerű közösségi üzenetküldő oldallal kívánja együttműködni, akkor egy olyan funkció, amely 140 karakterre csökkenti az üzeneteket, jó választás.

Függvény split_to_chunks($to,$text)( $teljes_hossz = (140 - strlen($to)); $text_arr = explode(" ",$text); $i=0; $üzenet=""; foreach ($text_arr mint $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 eltávolítása karakterláncból

Sokan azért hagynak URL-eket a blogbejegyzésekben, hogy forgalmat szerezzenek vagy visszajelzést kapjanak. Az ilyen linkek beszennyezik a blogot, és frusztrálóak lehetnek a tulajdonos számára, ha túl sok van belőlük. Tehát a következő funkció nagyon hasznos lesz!

$string = preg_replace("/\b(https?|ftp|fájl):\/\/[ [e-mail védett]#\/%?=~_|$!:,.;]*/i", "", $karakterlánc);

Karakterlánc konvertálása csigává

Olyan slug-ot kell létrehoznia (permalink számára), amely SEO kompatibilis? A következő függvény egy karakterláncot vesz paraméterként, és egy SEO-kompatibilis slug-ot ad vissza. Egyszerű és hatékony!

Függvény slug($str)( $str = strtolower(trim($str)); $str = preg_replace("/[^a-z0-9-]/", "-", $str); $str = preg_replace ("/-+/", "-", $str); return $str; )

CSV-fájl elemzése

A CSV (Coma separated Values ​​– vesszővel elválasztott értékek) fájlok egyszerű módja az adatok tárolásának és átvitelének, az ilyen fájlok PHP-ben történő elemzése pedig rendkívül egyszerű. Nem hiszed? A következő kód bemutatja, hogyan kell feldolgozni egy CSV-fájlt:

$fh = fopen("kapcsolatok.csv", "r"); while($line = fgetcsv($fh, 1000, ",")) ( echo "Kapcsolat: ($sor)"; )

Karakterlánc keresése egy másik karakterláncban

Ha a karakterlánc egy másik karakterláncban található, és meg kell találnia, akkor a probléma egyszerűen megoldódik:

A függvény tartalmazza($str, $content, $ignorecase=true)( if ($ignorecase)( $str = strtolower($str); $content = strtolower($content); ) return strpos($content,$str) ? igaz hamis; )

Annak ellenőrzése, hogy egy karakterlánc egy adott mintával kezdődik-e

Néhány programozási nyelv, például a Java, rendelkezik egy startWith metódussal/függvénnyel, amely lehetővé teszi annak ellenőrzését, hogy egy karakterlánc egy adott mintával kezdődik-e. Sajnos a PHP-nek nincs ilyen egyszerű beépített funkciója.
Elkészíthetjük azonban magunknak, és nagyon egyszerűen:

Függvény String_Begins_With($tű, $szénakazal) ( return (substr($haystack, 0, strlen($needle))==$tű); )

kiosztjuk e-mail a karakterláncból

Gondolkozott már azon, hogy a spammerek hogyan jutnak hozzá az Ön e-mail címéhez? Minden egyszerű. Elvesznek egy weboldalt (például egy fórumról), és elemzik a html kódot az e-mail címek kinyeréséhez. Az alábbi kód egy karakterláncot vesz paraméterként, és kinyomtatja az összes benne található e-mailt. Kérjük, ne használja ezt a kódot spam küldésére!

Függvény extract_emails($str)( // Reguláris kifejezés, amely kivonja az összes e-mailt egy karakterláncból: $regexp = "/()+\@(()+\.)+((2,4))+/i"; preg_match_all ($regexp, $str, $m); return isset($m) ? $m : array(); ) $test_string = "Tesztkarakterlánc... [e-mail védett] Más formátumok ellenőrzése: [e-mail védett]; foobar Még egy ellenőrzés: [e-mail védett] test6example.org [e-mail védett] [e-mail védett] example.org [e-mail védett]!foo!.org foobar "; print_r(extract_emails($test_string));

HTML sortörési kódot szúr be minden újsor elé

  • number_format – Számot formáz csoportbontással
  • ord – Az ASCII karakterkódot adja vissza
  • parse_str - Egy karakterláncot változókká elemez
  • print - Egy karakterláncot nyomtat
  • printf
  • quoted_printable_decode – Dekódolja az idézett nyomtatható metódussal kódolt karakterláncot
  • quotemeta – Menekülés a speciális karakterek elől
  • rtrim – Szóközök eltávolítása a karakterlánc végéről
  • sha1 – Egy karakterlánc SHA1 hash-jét adja vissza
  • sha1_file – Egy fájl SHA1 hash-jét adja vissza
  • hasonló_szöveg – Kiszámítja két karakterlánc hasonlóságának mértékét
  • soundex – Egy karakterlánc soundex billentyűjét adja vissza
  • sprintf
  • sscanf - Elemez egy karakterláncot a megadott formátum szerint
  • strcasecmp – kis- és nagybetűk közötti karakterlánc-összehasonlítás, biztonságos bináris formátumú adatokhoz
  • strcmp – Biztonságos karakterlánc-összehasonlítás bináris formátumú adatokhoz
  • strcoll - A karakterláncok összehasonlítása az aktuális területi beállítás alapján
  • strcspn – Egy olyan karakterlánc elején lévő szakasz hosszát adja vissza, amely nem egyezik a maszkkal
  • stripcslashes - Távolítsa el az addcslashes()
  • stripos – Egy részkarakterlánc első előfordulásának pozícióját adja vissza, nem érzékeny a kis- és nagybetűkre
  • stripslashes – Eltávolítja az addslashes()
  • strip_tags – HTML és PHP címkék eltávolítása egy karakterláncból
  • stristr – Hasonló az strstr függvényhez, de nem érzékeny a kis- és nagybetűkre
  • strlen – Egy karakterlánc hosszát adja vissza
  • strnatcasecmp – A kis- és nagybetűkre nem érzékeny karakterláncok összehasonlítása algoritmus segítségével
  • strnatcmp – Karakterláncok összehasonlítása a „természetes rendezés” algoritmussal
  • strncasecmp
  • strncmp – Hasonlítsa össze a karakterláncok első n karakterét kis- és nagybetűk nélkül, binárisan biztonságosan
  • strpos – Megkeresi egy részkarakterlánc első előfordulását a karakterláncban
  • strrchr
  • strrev – Egy karakterlánc megfordítása
  • strripos – Egy részkarakterlánc utolsó előfordulásának pozícióját adja vissza, nem érzékeny a kis- és nagybetűkre
  • strrpos – Megkeresi egy karakter utolsó előfordulását egy karakterláncban
  • strspn – A maszknak megfelelő karakterlánc elején lévő szakasz hosszát adja vissza
  • strstr – Megkeresi egy részkarakterlánc első előfordulását
  • strtok – Egy karakterlánc felosztása
  • strtolower – Karakterlánc átalakítása kisbetűssé
  • strtoupper - Karakterlánc átalakítása nagybetűssé
  • strtr - Adott karakterek konvertálása
  • str_ireplace – Az str_replace() függvény kis- és nagybetűket nem érzékeny változata.
  • str_pad – Egy karakterlánc betöltése egy másik karakterlánccal a megadott hosszúságúra
  • str_repeat – Ismétlődő karakterláncot ad vissza
  • str_replace – A keresési karakterláncot helyettesítő karakterláncra cseréli
  • str_rot13 – ROT13 transzformációt hajt végre egy karakterláncon
  • str_shuffle – Karakterek keverése egy karakterláncban
  • str_split – Karakterlánc konvertálása tömbbé
  • str_word_count – A karakterlánc szavaival kapcsolatos információkat ad vissza
  • substr – A függvény egy karakterlánc egy részét adja vissza
  • substr_count – Számolja meg, hogy egy karakterláncban hány előfordulási karakterlánc található
  • substr_replace – Egy karakterlánc egy részének cseréje
  • trim – Eltávolítja a szóközöket a karakterlánc elejéről és végéről
  • ucfirst – A karakterlánc első karakterét nagybetűssé alakítja
  • ucwords – A karakterlánc minden egyes szavának első karakterét nagybetűvé alakítja
  • vprintf – formázott karakterlánc nyomtatása
  • vsprintf – formázott karakterláncot ad vissza
  • wordwrap – sortörés karakter használatával tördeli a sort a megadott számú karakterből
  • Összehasonlító operátorok jellemzői karakterláncokkal kapcsolatban.

    $egy = 1; // Első számú. $nulla = 0; // Rendelje hozzá a nullát. if ($one == "") echo 1; // Nyilvánvalóan nem egyenlő - nem adja ki az 1-et. if ($zero == "") echo 2; //* Figyelem! A várakozásokkal ellentétben 2-es nyomat! if ("" == $nulla) echo 3; //* És ez sem segít - kiírja!.. if ("$zero" == "") echo 4; // Úgy van. if (strval($nulla) == "") echo 5; // Ez is helyes - nem adja ki az 5. if ($zero === "") echo 6; // Jobb, de nem érvényes PHP 3-ban.

    szelet()

    A chop() függvény egy karakterláncot ad vissza, miután eltávolítja belőle a szóközöket és az újsorokat. chop() függvény szintaxisa:

    string chop (string string)

    A következő példában a chop() függvény eltávolítja az új sorokat:

    $header = "Tartalomjegyzék\n\n"; $fejléc = chop($fejléc); // $header = "Tartalomjegyzék"

    str_pad()

    Az str_pad() függvény a megadott karakterekkel egy karakterláncot egy bizonyos hosszúságúra párol, és egy formázott karakterláncot ad vissza. Az str_pad() függvény szintaxisa a következő:

    string str_pad (string string, int padding-length [, string padding [, int padding-type]])

    Ha az opcionális kitöltési paraméter nincs megadva, a karakterlánc szóközökkel lesz kitöltve. Ellenkező esetben a karakterlánc a megadott karakterekkel lesz kitöltve. Alapértelmezés szerint a karakterlánc a jobb oldalon van kitöltve; azonban a padding-type paraméterben átadhatja az STR_PAD_RIGHT, STR_PAD_LEFT vagy STR_PAD_BOTH állandót, amely a karakterláncot a megadott irányba tölti ki. A példa bemutatja egy karakterlánc kitöltését az str_pad() függvénnyel az alapértelmezett paraméterekkel:

    $étel = "saláta"; print str_pad ($food, 5): // Kiírja a "salad" karakterláncot A következő példa az str_pad() függvény nem kötelező paramétereit használja: $header = "Tartalomjegyzék"; print str_pad ($header, 5, "= +=+=" , STR_PAD_BOTH); // A böngésző megjeleníti a karakterláncot =+=+= Tartalomlap=+=+="

    trim()

    A trim() függvény eltávolít minden szóközt a karakterlánc mindkét végéről, és visszaadja a kapott karakterláncot. A trim() függvény szintaxisa a következő:

    string trim (string country]

    Az eltávolított szóköz a \n, \r, \t, \v és \0 speciális karaktereket is tartalmazza.

    ltrim()

    Az lrim() függvény eltávolít minden szóközt és speciális karaktert a karakterlánc bal végéről, és visszaadja a kapott karakterláncot. Az ltrim() függvény szintaxisa a következő:

    string ltrim (karakterlánc)

    A függvény eltávolítja ugyanazokat a speciális karaktereket, mint a trim() függvény.

    strlen()

    Egy karakterlánc hosszának meghatározása

    A karakterlánc hosszát az strlen() függvénnyel határozhatjuk meg. Az strlen() függvény szintaxisa:

    int strlen (karakterlánc)

    A következő példa bemutatja, hogyan lehet meghatározni egy karakterlánc hosszát az strlen() függvénnyel:

    $string = "helló"; $hossz = strlen($karakterlánc); // $hossz = 5

    Két karakterlánc összehasonlítása

    Két karakterlánc összehasonlítása az egyik legfontosabb karakterlánc-művelet bármely nyelven. Bár ez a probléma többféleképpen is megoldható, a PHP-ben négy karakterlánc-összehasonlító függvény létezik:

    strcmp()

    Az strcmp() függvény két karakterláncot kis- és nagybetűk érzékenyen hasonlít össze. Az strcmp() függvény szintaxisa: int strcmp (string string1, string string2)

    Az összehasonlítás befejezése után az strcmp() a három lehetséges érték egyikét adja vissza:

    • 0, ha a string1 és a string2 azonos;
    • < 0, если строка1 меньше, чем строка2;
    • > 0, ha a string2 kisebb, mint a string1.

    $sthng1 = "vaj"; $string2 = "vaj"; if ((strcmp($karakterlánc1. $karakterlánc2)) == 0) : print "A karakterláncok egyenértékűek!"; endif; // ha a parancs TRUE-t ad vissza

    strcasecmp()

    Az strcasecmp() függvény pontosan úgy működik, mint az strcmp(), egy kivétellel: az összehasonlítás nem tesz különbséget a kis- és nagybetűk között. A strcasecmp() függvény szintaxisa a következő:

    int strcasecmp (karakterlánc1, karakterlánc2)

    A következő részlet két azonos karakterláncot hasonlít össze:

    $karakterlánc1 = "vaj"; $string2 = "Vaj"; if ((strcmp($karakterlánc1, $karakterlánc2)) == 0) : print "A karakterláncok egyenértékűek!"; endif; // ha a parancs TRUE-t ad vissza

    strspn()

    Az strspn() függvény a string1 első szegmensének hosszát adja vissza, amely a string2 karaktereit tartalmazza. Az strspn() függvény szintaxisa:

    int strspn (karakterlánc1, karakterlánc2)

    A következő részlet bemutatja, hogyan használható az strspn() függvény a jelszó ellenőrzésére:

    $jelszó = "12345"; if (strspn($jelszó, "1234567890") != strlen($jelszó)) : print "A jelszó nem állhat kizárólag számokból!"; endif:

    strcspn()

    Az strcspn() függvény a string1 első szegmensének hosszát adja vissza, amely olyan karaktereket tartalmaz, amelyek nem találhatók a string2-ben. Az strcspn() függvény szintaxisa:

    int strcspn (karakterlánc1, karakterlánc2)

    A következő kódrészlet az strcspn() függvényt használja a jelszó érvényesítésére:

    $jelszó = "12345"; if (strcspn($jelszó, "1234567890") == 0) : print "A jelszó nem állhat kizárólag számokból!"; endif;

    Karakterlánc-adatok kezelése reguláris kifejezések használata nélkül

    Nagy mennyiségű információ feldolgozásakor a reguláris kifejezés függvények nagymértékben lelassítják a program végrehajtását. Ezeket a függvényeket csak viszonylag összetett karakterláncok feldolgozásakor szabad használni, ahol valóban szükség van reguláris kifejezésekre. Ha a szövegelemzést viszonylag egyszerű szabályok szerint végezzük, használhatjuk a PHP szabványos funkcióit, amelyek jelentősen felgyorsítják a feldolgozást. Mindezen funkciók leírása alább található.

    strtok()

    Az strtok() függvény a karakterláncot tokenekre bontja a második paraméter által megadott határolójelek szerint. Az strtok() függvény szintaxisa a következő:

    strtok strtok (karakterlánc, karakterlánchatárolók)

    Az strtok() függvénynek van egy furcsasága: egy karakterlánc teljes felosztásához a függvényt többször egymás után meg kell hívni. A függvény legközelebbi meghívásakor kivonja a következő tokent a karakterláncból. Ebben az esetben a karakterlánc-paraméter csak egyszer kerül beállításra - a függvény nyomon követi a karakterlánc aktuális pozícióját, amíg a karakterláncot teljesen tokenekbe elemezzük, vagy új karakterlánc-paramétert nem állítunk be. A következő példa bemutatja, hogyan lehet felosztani egy karakterláncot több határolón:

    $info = "WJ Gi1more: [e-mail védett]| Columbus, Ohio"; // Kettőspont (:), pipe (|) és vessző (.) határolók $tokens = ":|,"; $tokenized = strtok($info, $tokens); // Tömbelemek nyomtatása $ tokenized while ($tokenized) : echo "Element = $tokenized
    "; // Vegye figyelembe, hogy a következő strtok hívásoknál // az első argumentum nem kerül átadásra $tokenized = strtok($tokens); endwhile; Eredmény: Element = WJGilmore Element = [e-mail védett] Elem = Columbus Elem = Ohio

    parse_str()

    A parse_str() függvény párokat bont ki egy karakterláncban, és hozzárendeli a változók értékeit az aktuális hatókörben. A parse_str() függvény szintaxisa:

    void parse_str(karakterlánc)

    A parse_str() függvény különösen hasznos HTML űrlapadatokat vagy egyéb gazdag információkat tartalmazó URL-ek elemzésekor. A következő példa egy URL-en keresztül továbbított információkat elemzi. A karakterlánc egy szabványos módja az adatok oldalak közötti továbbításának, akár hiperhivatkozássá fordítva, akár beírva HTML űrlap:

    $url = "fname=wj&lname=gilmore&zip=43210"; parse_str($url); // A parse_str() végrehajtása után a következő változók állnak rendelkezésre: // $fname = "wj": // $lname = "gilmore"; // $zip = "43210"

    Mivel ezt a függvényt úgy tervezték, hogy URL-ekkel működjön, figyelmen kívül hagyja az „és” karaktert (&).

    felrobban()

    Az explode() függvény egy karakterláncot elemekre bont, és ezeket az elemeket tömbként adja vissza. Explode() függvény szintaxisa:

    tömb explode (karakterlánc határoló, karakterlánc string[, int küszöb])

    A felosztás a határoló minden egyes példányánál megtörténik, és a fogadott töredékek száma korlátozható az opcionális küszöbparaméterrel.

    Egy karakterlánc felosztását az explode() függvénnyel a következő példa szemlélteti:

    $info = "wilson | baseball | indiánok"; $felhasználó = explode("|", $info); // $user = "wilson"; // $user = "baseball"; // $user = "Indiánok";

    Az explode() függvény majdnem teljesen megegyezik a fent leírt POSIX reguláris kifejezés split() függvényével. A fő különbség az, hogy a reguláris kifejezések paraméterként történő átadása csak a split() hívása esetén megengedett.

    felrobban ()

    Ha az explode() függvény egy karakterláncot tömbelemekre bont, akkor megfelelője, az implode() függvény a tömböt egy karakterláncba fűzi össze. Az implode() függvény szintaxisa a következő:

    string implode (sztring határoló, tömbtöredékek)

    Egy karakterlánc tömbből történő létrehozását a következő példa szemlélteti:

    $ohio_cities = array("Columbus", "Youngstown", "Cleveland", "Cincinnati"); $város_karakterlánc = implode("l", $ohio_városok); // $city_string = "Columbus | Youngstown | Cleveland | Cincinnati";

    Az implode()-nek van egy álneve, a join() függvény.

    strpos()

    Az strpos() függvény megkeresi egy adott részkarakterlánc első példányát egy karakterláncban. Az strpos() függvény szintaxisa a következő:

    int strpos (string string, string substring [, int offset])

    Az opcionális paraméter offset megadja azt a pozíciót, ahol a keresésnek el kell indulnia. Ha az alsztring nem található, az strpos() FALSE (0) értéket ad vissza.

    A következő példa meghatározza egy dátum első előfordulásának helyét egy naplófájlban:

    $log = " 206.169.23.11:/www/:2000-08-10 206.169.23.11:/www/logs/:2000-02-04 206.169.23.11:/www/img/:1999-01-31"; // Hol jelenik meg először 1999 a folyóiratban? $pos = strpos($log, "1999"); // $pos = 95. mivel az "1999" első példánya // a $log változóban lévő karakterlánc 95. pozíciójában van

    strrpos()

    A strrpos() függvény megkeresi egy adott karakter utolsó előfordulását egy karakterláncban. A strrpos() függvény szintaxisa:

    int strpos (karakterlánc, char karakter)

    Ez a függvény képességeit tekintve gyengébb a megfelelőjénél, az strpos() függvénynél, mivel csak egyetlen karaktert tesz lehetővé, és nem a teljes karakterláncot. Ha egy karakterláncot adunk át a strrpos() második paramétereként, akkor a keresésben csak a karakterlánc első karaktere lesz felhasználva.

    str_replace()

    Az str_replace() függvény egy karakterláncban keres egy adott részkarakterlánc minden előfordulását, és lecseréli őket egy új részkarakterláncra. Az str_replace() függvény szintaxisa a következő:

    string str_replace (karakterlánc részkarakterlánc, karakterlánccsere, karakterlánc karakterlánc)

    Az ebben a szakaszban később ismertetett substr_replace() függvény csak egy karakterlánc egy meghatározott részének cseréjét teszi lehetővé. Az alábbiakban bemutatjuk, hogyan használják az str_replace() függvényt egy karakterlánc globális cseréjére.

    Ha az alkarakterlánc soha nem fordul elő a karakterláncban, az eredeti karakterlánc nem módosul:

    $favorite_food = "Kedvenc ételeim a fagylalt és a csirkeszárny"; $kedvenc_étel = str_replace("csirke_szárnyak", "pizza", $kedvenc_étel); // $favorite_food = "Kedvenc ételeim a fagylalt és a pizza"

    strstr()

    Az strstr() függvény egy karakterlánc azon részét adja vissza, amely az adott részkarakterlánc első előfordulásánál kezdődik. Az strstr() függvény szintaxisa:

    string strstr (karakterlánc, karakterlánc részkarakterlánc)

    A következő példa az strstr() függvényt használja egy tartománynév kinyerésére egy URL-ből:

    $url = "http://www.apress.com"; $domain - strstr($url, "."); // $domain = ".apress.com"

    substr()

    A substr() függvény a karakterláncnak azt a részét adja vissza, amely az adott kezdőponttól kezdődik és a megadott hosszúságú. A substr() függvény szintaxisa a következő:

    string substr (karakterlánc, int start[, int hossza])

    Ha az opcionális hosszparaméter nincs megadva, a részkarakterlánc a megadott kezdőponttól kezdődik és a karakterlánc végéig folytatódik. A funkció használatakor négy dolgot kell szem előtt tartani:

    • ha a start paraméter pozitív, akkor a visszaadott részkarakterlánc a megadott számú karakterlánc helyén kezdődik;
    • ha a start paraméter negatív, a visszaadott részstring a pozícióban kezdődik (karakterlánc hossza - start);
    • ha a hossz paraméter pozitív, a visszaadott részstring tartalmazza az összes karaktert a pozíció kezdetétől a pozíció kezdete+hossza. Ha az utolsó érték nagyobb, mint a karakterlánc hossza, a rendszer a karakterlánc végéig terjedő karaktereket ad vissza;
    • ha a hossz paraméter negatív, akkor a visszaadott részkarakterlánc a megadott távolságra végződik a karakterlánc végétől.

    Ne feledje, hogy a start paraméter eltolást ad meg a karakterlánc első karakteréhez képest; így a visszaadott karakterlánc valójában a karakterszámmal kezdődik (kezdet + 1).

    A következő példa bemutatja, hogyan lehet kivonni egy karakterlánc egy részét a substr() függvénnyel:

    $autó = "1944 Ford"; Smodel = substr($autó, 6); // Model = "Ford"

    Példa pozitív hosszparaméterrel:

    $autó = "1944 Ford"; $modell = substr($autó, 0, 4); // $model = "1944" Negatív hosszúságú példa: $car = "1944 Ford"; $modell = substr($autó, 2, -5); // $model = "44"

    substr_count()

    A substr_count() függvény egy részkarakterlánc előfordulásának számát adja vissza egy adott karakterláncban. substr_count() függvény szintaxisa: int substr_count (string string, string substring) A következő példában a substr_count() függvény megszámolja az ain részkarakterlánc előfordulásának számát: $tng_twist = "Az eső főleg Spanyolország síkságain esik"; $count = substr_count($tng_twist, "ain"); // $count = 4

    substr_replace()

    A substr_replace() függvény lecseréli a karakterláncnak azt a részét, amely az adott helyen kezdődik. Ha megadjuk az opcionális paraméter hosszát, akkor a megadott hosszúságú töredék lecserélésre kerül; ellenkező esetben a helyettesítő karakterlánc teljes hossza lecserélésre kerül. A substr_replace() függvény szintaxisa:

    string substr_replace (karakterlánc, karakterlánccsere, int start[, int hossza])

    A kezdő és hossz paraméterek beállítása bizonyos szabályok szerint történik:

    • ha a start paraméter pozitív, akkor a csere az adott pozícióból indul;
    • ha a start paraméter negatív, a csere a pozícióból indul (karakterlánc hossza - start);
    • ha a hossz paraméter pozitív, akkor az adott hosszúságú töredéket kicseréljük;
    • ha a hossz paraméter negatív, a csere a pozícióban ér véget (karakterlánc hossza - hossz).

    Egy egyszerű szövegcsere a substr_replace() függvénnyel a következő példában látható:

    $favs = " " kedvenc linkjei"; $name = "Alessia"; // A "0, 0" paraméterek azt jelentik, hogy a cserélendő töredék // kezdődik és a sor első pozíciójában ér véget. $favs - substr_replace( $kedvencek, $név , 0, 0); $favs nyomtatása:

    Eredmény:

    Alessia kedvenc linkjei

    Karakterláncok és fájlok konvertálása HTML formátumba és fordítva

    Egy karakterlánc vagy egy teljes fájl webböngészőben való megtekintésre alkalmas formátumba konvertálása (vagy fordítva) egyszerűbb, mint első pillantásra tűnhet. A PHP-ben erre speciális funkciók vannak.

    Szöveg konvertálása HTML-be

    Az egyszerű szöveg gyors konvertálása webböngésző formátumba nagyon gyakori feladat. Az ebben a részben leírt funkciók segítenek ennek megoldásában.

    nl2br()

    Az nl2br() függvény minden újsort (\n) lecserél a megfelelő HTML konstrukciókkal.

    Az nl2br() függvény szintaxisa:

    string nl2br (karakterlánc)

    Az újsor karakterei lehetnek láthatók (azaz kifejezetten szerepelhetnek a sorban) vagy láthatatlanok (azaz a szerkesztőben beírva). A következő példa egy szöveges karakterláncot HTML formátumba konvertál a \n karakterek sortöréssel történő helyettesítésével:

    // A szerkesztőben megjelenő szöveg. $text_recipe = " Party szósz receptje: 1 doboz párolt paradicsom 3 evőkanál friss citromlé Keverjük össze, hidegen tálaljuk."; // Újsorok konvertálása erre
    $htinl_recipe = nl2br($text_recipe) Amikor ezt követően kinyomtatják a $html_recipe fájlt, a következő HTML szöveg kerül átadásra a böngészőnek: Party Sauce recept:
    1 doboz párolt paradicsom
    3 evőkanál friss citromlé
    Keverjük össze, tálaljuk hidegen.

    htmlentities()

    A htmlentities() függvény a karaktereket egyenértékű HTML-konstrukcióvá alakítja. A htmlentities függvény szintaxisa a következő:

    karakterlánc htmlentities (karakterlánc)

    A következő példa végrehajtja a karakterláncok szükséges cseréjét a böngészőben való megjelenítéshez:

    $user_input = "A Cafe Francaise című szakácskönyv költsége

    A htmlentities() függvény jelenleg csak ISO-8559-1 (ISO-Latin-1) kódolású karaktereknél működik. Ezenkívül nem alakítja át a szóközöket az elvárásoknak megfelelően.

    htmlspecialchars()

    A htmlspecialchars() függvény lecserél néhány olyan karaktert, amelyek különleges jelentéssel bírnak a HTML-kontextusban, azok megfelelő HTML-konstrukcióira. A htmlspecialchars() függvény szintaxisa a következő:

    string htmlspecialchars (karakterlánc)

    A html speciális chars() függvény jelenleg a következő karaktereket konvertálja: & a &; A " " a következőre konvertálódik; a következőre konvertálódik: >.

    Ez a funkció különösen megakadályozza, hogy a felhasználók HTML-jelölést adjanak meg interaktív webes alkalmazásokban (például elektronikus fórumokon). A HTML-jelölés hibái a teljes oldal hibás megjelenítését okozhatják. Ennek a feladatnak azonban van egy hatékonyabb megoldása - a címkék teljes eltávolítása a stringből a strip_tags() függvénnyel.

    A következő példa bemutatja a potenciálisan veszélyes karakterek eltávolítását a htmlspeclalchars() függvénnyel:

    $user_input = "Egyszerűen nem tudom elérni PHP és azok a mesés főzési receptek!"; $conv_input = htmlspecialchars($user_input); // $conv_input = "Egyszerűen nem tudom"<> PHP és a mesés főzési receptek!"

    Ha a htmlspecialchars()-t az nl2br()-el együtt használjuk, akkor az utóbbit a htmlspecialchars() után kell meghívni. Egyébként tervek
    Az nl2br() meghívásával generált karakterek látható karakterekké alakulnak.

    get_html_translation_table()

    A get_html_translation_table() függvény kényelmes eszközt biztosít a szöveg HTML-ekvivalenssé alakítására. A get_htrril_translation_table() függvény szintaxisa a következő:

    string get_html_translation_table(int table)

    A get_html_translation_table() függvény a szabványos htmlspecialchars() és htmlentities() függvényekben használt két fordítási tábla egyikét adja vissza (amelyet a tábla paraméter határozza meg). A visszatérési érték egy másik szabványos függvénnyel, az strtr() együtt használható szöveg HTML-kóddá alakítására.

    A táblázat paramétere két érték egyikét veszi fel:

    • HTML_ENTITIES;
    • HTML_SPECIALCHARS.

    A következő példa a get_html_translation_table() függvényt használja a szöveg HTML-kódká konvertálásakor:

    $string = "La pasta e il piatto piu amato in Italy"; $fordítás = get_html_translation_table(HTML_ENTITIES); print strtr($karakterlánc, $fordítás); // A speciális karakterek HTML konstrukciókká alakulnak // és helyesen jelennek meg a böngészőben.

    Egyébként az array_flip() függvény lehetővé teszi a szöveg HTML formátumba való konvertálását az ellenkező irányba, és visszaállítja az eredeti szöveget. Tegyük fel, hogy az előző példában szereplő strtr() eredményének kinyomtatása helyett a $translated string változóhoz rendeltük.

    A következő példában az eredeti szöveget az array_flip() függvény állítja vissza:

    $fordítás = array_flip($fordítás); $translated_string - "La pasta é il piatto piú amato in Italia"; $eredeti_karakterlánc = strtr($fordított_karakterlánc, $fordítás); // $original_string = "La pasta e il piatto piu amato in Italia";

    strtr()

    Az strtr() függvény lefordít egy karakterláncot, azaz lecseréli a forrás karakterlánc összes karakterét a cél karakterlánc megfelelő karaktereire. Az strtr() függvény szintaxisa:

    string strtr (karakterlánc, karakterlánc forrása, karakterlánc célhelye)

    Ha a forrás és a cél karakterláncok különböző hosszúságúak, a hosszú karakterláncot csonkolja, hogy illeszkedjen a rövid karakterlánchoz.

    Van egy alternatív szintaxis az strtr() két paraméteres meghívására; ebben az esetben a második paraméter egy asszociatív tömböt tartalmaz, amelynek kulcsai megfelelnek a helyettesítő részkarakterláncoknak, értékei pedig a helyettesítő részkarakterláncoknak. A következő példa a HTML-címkéket XML-szerű konstrukciókra cseréli:

    " => "

    ", "" => "

    "); $string = "

    Ma PHP-alapú hírek

    "; print strtr($string, $source); // Kimeneti karakterlánc " Ma PHP-alapú hírek" ?>

    Konvertálja a HTML-t egyszerű szöveggé

    Néha egy HTML-fájlt egyszerű szöveggé kell konvertálnia. Az alábbiakban ismertetett funkciók segítenek ebben a feladatban.

    strip_tags()

    A strip_tags() függvény eltávolítja az összes HTML és PHP címkét egy karakterláncból, csak a szöveget hagyja meg benne. A strip_tags() függvény szintaxisa a következő:

    string strip_tags (karakterlánc karakterlánc [, engedélyezett_címkék karakterlánc])

    Az opcionális allow_tags paraméter lehetővé teszi olyan címkék megadását, amelyeket figyelmen kívül kell hagyni az eltávolítási folyamat során.

    A következő példa az összes HTML-címke eltávolítására szolgál egy karakterláncból a strip_tags() függvény használatával:

    $user_input = "Én csak szeretet PHP és ínyenc receptek!"; $stripped_input = strip_tags($user_input); // $stripped_input = "Imádom a PHP-t és az ínyenc recepteket!";

    A következő példában nem az összes, de csak néhány címke kerül eltávolításra:

    $input = "I szeretet nak nek eszik!!"; $szalag_bemenet = strip_tags($user_input, " "); // $strip_input = "Szeretem eszik!!";

    A címkék szövegből való eltávolítását szintén az fgetss() függvény végzi.

    get_meta_tags()

    Bár a get_meta_tags() függvény nem kapcsolódik közvetlenül a szövegátalakításhoz, ez egy nagyon hasznos függvény, amelyet meg kell említeni. A get_meta_tags() függvény szintaxisa:

    tömb get_meta_tags (karakterlánc fájlnév/URL [, int include_path])

    A get_meta_tags() függvény arra szolgál, hogy a HTML-fájlban keressen META-címkéket.

    A META címkék információkat tartalmaznak egy elsősorban keresőmotorok által használt oldalról. Ezek a címkék a címkepáron belül vannak... . A META címkék használatát a következő részlet szemlélteti (nevezzük example.html-nek, mert a 8.2-es listában használni fogják): PHP receptek A get_meta_tags() függvény a dokumentum fejében olyan címkéket keres, amelyek a META szóval kezdődnek, és tárolja a címkeneveket és azok tartalmát egy asszociatív tömbben. A 8.2-es lista bemutatja, hogyan kell alkalmazni ezt a függvényt az example.html fájlra. Felsorolás 8.2. META címkék kibontása HTML fájlból a get_meta_tags() függvénnyel

    $meta_tags = get_meta_tags("example.html"): // A $meta_tags változó egy tömböt tartalmaz a következő információkkal: // $meta_tags["keywords"] = "PHP, kód, receptek, web" // $meta_tags[ "description" ] = "PHP info" // $meta_tags["author"] = "KDG";

    Érdekes részlet: a META tag adatok nem csak a szerveren található fájlokból, hanem más URL-ekről is lekérhetők.

    Karakterlánc konvertálása nagy- és kisbetűvé

    A PHP négy funkcióval rendelkezik egy karakterlánc kis- és nagybetűjének megváltoztatására:

    strtolower()

    A strtolower() függvény egy karakterlánc összes alfabetikus karakterét kisbetűvé alakítja. A strtolower() függvény szintaxisa a következő:

    strtolower (karakterlánc)

    A nem alfabetikus karaktereket a függvény nem módosítja. Egy karakterlánc kisbetűssé alakítását a strtolower() függvénnyel a következő példa mutatja be:

    $sentence = "A PHP FŐZÉSE és PROGRAMOZÁSA a KETTŐ kedvencem!"; $mondat = strtolower($mondat); // A függvényhívás után a $mondat a karakterláncot tartalmazza // "a php főzés és programozás a két kedvencem!"

    strtoupper()

    A karakterláncok nem csak kisbetűvé, hanem nagybetűvé is konvertálhatók. Az átalakítást a strtoupper() függvény hajtja végre, amelynek szintaxisa a következő:

    string strtoupper (string string)

    A nem alfabetikus karaktereket a függvény nem módosítja. Egy karakterlánc nagybetűssé alakítását az strtoupper() függvénnyel a következő példa mutatja:

    $sentence = "a főzés és a PHP programozás a két kedvencem!"; $mondat = strtoupper($mondat); // A függvényhívás után a $mondat tartalmazza a sztringet // "A PHP FŐZÉS ÉS PROGRAMOZÁSA A KETTŐ KEDVENCEM!"

    ucfirst()

    Az ucfirst() függvény a karakterlánc első karakterét nagybetűvel írja – feltételezve, hogy az alfabetikus karakter. Az ucfirst() függvény szintaxisa:

    string ucfirst (karakterlánc)

    A nem alfabetikus karaktereket a függvény nem módosítja. A karakterlánc első karakterének az ucfirst() függvény általi átalakítása a következő példában látható:

    &sentence = "A főzés és a programozás a PHP a két kedvencem!"; $mondat = ucfirst($mondat); // A függvényhívás után a $mondat tartalmazza a karakterláncot // "A főzés és a PHP programozás a két kedvencem!"

    ucwords()

    Az ucwords() függvény a karakterlánc minden szava első betűjét nagybetűvel írja. Az ucwords() függvény szintaxisa:

    karakterlánc ucwords (string string")

    A nem alfabetikus karaktereket a függvény nem módosítja. A „szó” a karakterlánc többi elemétől szóközökkel elválasztott karaktersorozat. A következő példa a szavak első karaktereinek konvertálását mutatja be az ucwords() függvénnyel:

    $sentence = "a főzés és a PHP programozás a két kedvencem!"; $mondat = ucwords($mondat); // A függvényhívás után a $mondat tartalmazza a karakterláncot // "A PHP főzés és programozás a két kedvencem!"

    strchr()

    strrchr("karakterlánc", "o") - Megkeresi egy részkarakterlánc utolsó előfordulását

    Ha az alkarakterlánc nem található, a FALSE értéket adja vissza.

    Az strchr()-től eltérően, ha a keresett karakterlánc egynél több karakterből áll, csak az első karakter kerül felhasználásra.

    Ha a második argumentum nem karakterlánc, akkor a rendszer egész számra adja, és karakterkódként kezeli.

    // utolsó könyvtár lekérése innen: $PATH $dir = substr(strrchr($PATH, ":"), 1); // mindent lekér az utolsó újsor után $text = "1. sor\n2. sor\n3. sor"; $utolsó = substr(strrchr($szöveg, 10), 1);

    highlight_string()

    highlight_string – a karakterlánc szintaxiskiemelése.

    vegyes highlight_string(string str[, bool return])

    A highlight_string() függvény az str szintaktikai színű változatát adja ki a PHP beépített szintaktikai kiemelésében meghatározott színek használatával.

    Ha a visszatérés második paramétere TRUE, akkor a highlight_string() a kinyomtatás helyett karakterláncként adja vissza a kiemelt kódverziót. Ha a második paraméter nem TRUE, a highlight_string() TRUE értéket ad vissza siker esetén, FALSE értéket sikertelenség esetén.

    Megjegyzés: 1. A return paraméter a PHP 4.2.0 óta elérhető. Előtte gyárilag működött, pl. HAMIS.
    2. A Highlight_String() függvény címkék alapján különbözteti meg a PHP kódot. show_source()- szinonima highlight_file(). Az alapértelmezett kiemelési szín megváltoztatásához használja a következő PHP direktívákat:

    Highlight.bg #FFFFFF highlight.comment #FF8000 highlight.default #0000BB highlight.html #000000 highlight.keyword #007700 highlight.string #DD0000 in .htaccess: php_flag highlight.bg #FFFFFF PHP-ben: if(@ini_get("highlight .bg")=="") ...

    addslashes()

    - Megszökik a speciális karaktereket egy karakterláncban

    Egy olyan karakterláncot ad vissza, amelynek minden speciális karaktere elé fordított perjel (\) van, például a karakterlánc későbbi adatbázis-lekérdezésben való használatához.

    Az egy idézőjel ("), a kettős idézőjel ("), a fordított perjel (\) és a NULL (NULL bájt) megtisztított.

    $str = "O"reilly a neved?"; // kimenetek: O\"reilly a neved? echo addslashes($str);

    perjelek

    - Eltávolítja az addslashes() által előidézett karakterjeleket Eltávolítja a megtisztított fordított perjeleket. (\" a következőre konvertálódik: " stb.). A dupla fordított perjelek (\\) egyszeres fordított perjelekké (\) alakulnak.

    sortörés()

    Sortörés karakterrel tördeli a megadott számú karaktert // Wordwrap() használatával. function cite($ourText, $maxlen=60, $prefix="> ") ( $st = wordwrap($ourText, $maxlen-strlen($prefix), "\n"); $st = $prefix.str_replace( "\n", "\n$prefix", $st); return $st; ) echo cite("Az első általam tervezett Mátrix természetesen tökéletes volt, műalkotás volt – hibátlan, fenséges. A diadal csak monumentális kudarca miatt. Pusztulásának elkerülhetetlensége most nyilvánvaló számomra a minden emberben rejlő tökéletlenség következményeként. Így az Ön történelme alapján újraterveztem, hogy pontosabban tükrözze természetének változó groteszkjeit. ismét csalódott volt a kudarc miatt." 20);

    > Az első Matrix, amit én terveztem, teljesen > természetesen > tökéletes volt, műalkotás volt - > hibátlan, fenséges. A diadal csak a monumentális kudarcával egyenlő. Végzetének elkerülhetetlensége most nyilvánvaló számomra, mint a minden emberben rejlő tökéletlenség következménye. Így az Ön történelme alapján újraterveztem, hogy pontosabban tükrözze a természeted változó groteszkjeit. > Azonban ismét > csalódott voltam a kudarc miatt.


    Olvass tovább:

    Megjelenés dátuma: 2018.03.01

    Üdvözlet, barátok! 🙂

    Azt hiszem, ha nem is mindenki, de a legtöbben a gyakorlatban találkoztak azzal, hogy a txt fájlokból információkat kell olvasni a szinten. szerver szkriptek. Nekem legalábbis volt több ilyen esetem, ezek közül az utolsót ma elmondom.

    Nincs ebben semmi bonyolult, de néha elkerekedik a szem a szervernyelvek által nyújtott lehetőségek bőségétől. Ha konkrétan a PHP-ről beszélek, amiben jelenleg programozok, a funkcióit használva soronként, és teljes egészében egy sorba, illetve egy tömbbe olvashatja a fájlok tartalmát, és ez utóbbi opcióhoz több lehetőség is van. Ezek a piték 🙂

    Sajnos ezek a módszerek eltérő sebességgel működnek a különböző szerkezetű fájloknál, és a hivatalos dokumentációban egy szó sem esik a munkájuk sebességéről; ezt csak a gyakorlatban lehet megítélni, minden lehetséges opciót válogatva.

    Tehát ma megmutatom, hogyan működnek a PHP különféle fájlolvasó funkciói, hogy amikor valós feladatokhoz PHP fájlelemzőt kell készítened, tudd, miből válassz. És azt is elmondom neked, hogy pontosan hogyan kell helyesen választani „harci körülmények között”.

    Megy! 🙂

    PHP fájlelemző létrehozása – kezdeti feltételek

    Mielőtt elkezdenénk, néhány szót arról a feladatról, amelyhez PHP-ben létrehoztam egy fájlelemzőt, majd a megvalósított lehetőségek közül kiválasztottam az optimálisat.

    Egyszer volt egy problémám a munkahelyemen, ami abból állt, hogy a felhasználók telefonszámait rossz formátumban tárolták az adatbázisban. Magát a hibát természetesen gond nélkül kijavítottam.

    De mi a teendő az akkori adatbázisban már tárolt helytelen információkkal? Természetesen ki kellett cserélni a megfelelőre.

    Ehhez kaptam egy szöveges fájlt a felhasználói azonosítókkal és a telefonjaikkal, amit át kellett vinni az adatbázisba.

    Azt kell mondanom, hogy elég súlyosnak bizonyult: 352 KB és 8223 sornyi szöveg, amelyek mindegyike tartalmazza a felhasználói azonosítót és a telefonszámát formátumban user_id:phone_number.

    Egyszóval az egész feladat az volt, hogy soronként beolvassa a PHP fájlt, a sorból kinyerje az azonosítót és a telefont, majd frissítse a felhasználó telefonértékét az adatbázisban, amit az azonosító talált meg.

    A projektem PHP Yii keretrendszeren valósult meg, ezért a további kódpéldákban annak API elemeivel találkozhatsz, különösen az adatbázissal való munkavégzéshez, szóval ne ijedj meg 🙂

    A nyelven elérhető konstrukciók, valamint más fejlesztők, az interneten apránként gyűjtött tapasztalatok elemzése után sikerült 4 módszert azonosítanom, amelyeket később bemutatok.

    Nos, ezek után elmondom, milyen szempontok alapján és pontosan hogyan választottam ki közülük a legjobb lehetőséget. És természetesen megosztom az eredményeket 🙂

    Tehát ez a cikk remek türelemgyakorlat 🙂 Lényege, hogy alaposan tanulmányozza át a következő anyagot, amíg a végén rátok várnak az eredmények. Útközben egyébként a fantáziáján is dolgozhat, feltételezve, hogy pontosan hogyan választják ki az ideális lehetőséget.

    Fájl olvasása PHP-ben soronként az fgets()

    Ennek eredményeként az ezt az algoritmust megvalósító PHP fájlelemző számomra a következő formát öltötte:

    find("egyedi_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($kliens) ( $kliens->phone = str_replace(array("\r", "\n"), "", $params); $kliens->save(); ) ) ) ) if (!feof ($fh)) ( echo "Hiba: váratlan fgets() fail\n"; ) fclose($fh); ) else echo "Ellenőrizze a fájlnevet, a fájl nem létezik!"; )

    Kicsit megfejtem a firkámat, ha valakinek nehezen érti.

    A legelején a változó $fájlnév hozzá van rendelve az elemezni kívánt fájl nevének értékéhez, a teljes elérési úttal együtt. Ezt követi a PHP, amely ellenőrzi egy fájl létezését, és függvényekkel, hogy olvasható-e A fájl létezik()és is_readable() illetőleg.

    Ha minden rendben van, nyissa meg a fájlt a funkció segítségével fopen(), amelyet egy PHP hibavezérlő utasítással hívunk meg, hogy letiltsuk a függvény által generált hibák kimenetét. Úgy döntöttem, hogy a szabvány helyett saját hibaüzenetet generálok vele.

    Ha a fájlt sikerült megnyitni, akkor minden sorát ciklusban végigmegyünk a fájl végéig, és ha a sor nem üres, kettősponttal választjuk el a függvénnyel. felrobban().

    Ezután ellenőrizzük, hogy a felhasználói azonosító és a telefonja nem üres-e, megkeressük a felhasználót az adatbázisban azonosító szerint, és ha létezik, akkor frissítjük a telefonszámot, eltávolítva a számból a kötőjelet és az új sor elejét. érték.

    Nos, PHP függvényeket is használtam strtolower()és strtoupper() különböző regiszterekbe írható azonosítókkal rendelkező felhasználó meglétét ellenőrizni az adatbázisban, mert esetemben szimbólumokból és számokból álltak.

    A PHP egy fájlt tömbbe elemez a file() segítségével

    Ez a PHP-beli fájlolvasási módszer magában foglalja a függvény használatát fájl(), amely megnyitja a fájlt, és a tartalmát egy tömbbe helyezi. Ebben az esetben a tömb elemei csak az olvasott fájl sorai lesznek, ami az én helyzetemben nagyszerű.

    A PHP fájlelemző ezen verziójának kódja a következő:

    find("egyedi_azonosító IN (:id, :id2)", array(":id" => strtolower($params), ":id2" => strtoupper($params))); if ($kliens) ( $kliens->telefon = str_replace(array("\r", "\n"), "", $params); $kliens->

    Amint láthatja, ez csak az elején tér el a PHP fájl korábbi olvasásának módjától, ahol a fájlt megnyitja és azonnal beolvassa a függvény. fájl() egy csomó helyett fopen() + fgets(), mint azelőtt.

    PHP beolvassa a fájlt változóba a fread() segítségével

    Egy másik PHP-funkció a fájl elemzéséhez fread(), amellyel egy meghatározott hosszúságú fájl különböző töredékeit olvashatja el. A teljes fájl PHP-ben történő olvasásához a töredékméretként a függvény használatával kapott fájlméretet adtam meg töredékméretként fájl méret():

    find("egyedi_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($kliens) ( $kliens->phone = str_replace(array("\r", "\n"), "", $params); $client->save(); ) ) ) ) ) else echo " Ellenőrizze a fájlnevet, a fájl nem létezik!";)

    Ez a PHP-fájl olvasásának ez a módszere valójában nagyon hasonlít az előzőhöz, mivel annak ellenére, hogy a PHP használatával a fájlból származó adatok kezdetben nem egy tömbbe, hanem egy karakterlánc-változóba kerülnek beolvasásra, majd továbbra is tömbbé konvertálódik, mert könnyebb vele dolgozni, mint húrral.

    A legegyszerűbben PHP-ben a stringet tömbbé alakíthatjuk a ma már elválasztóként használt explode() függvény segítségével, amelyre a string eleje karakterét adtuk át.

    Hozzon létre egy PHP fájlelemzőt a file_get_contents() alapján

    Nos, és végül úgy döntöttem, hogy megvalósítom a PHP fájlelemzést a függvény segítségével file_get_contents(), amely éppen arra készült, hogy a teljes fájlt egy sorba olvassa, azaz. majdnem úgy működik fread($fp, fájlméret($fájlnév)).

    Az egyetlen kivétel az, hogy a file_get_contents() maga nyitja meg és olvassa be a fájlt, míg a fread() használatakor először meg kellett nyitnia a fájlt az fopen() paranccsal, és le kellett szereznie a mutatóját a további használatra.

    Általánosságban elmondható, hogy a file_get_contents() függvényen alapuló PHP fájlelemző kód majdnem ugyanaz lesz, mint az előző esetben:

    find("egyedi_id IN (:id1, :id2)", array(":id1" => strtolower($params), ":id2" => strtoupper($params))); if ($kliens) ( $kliens->phone = str_replace(array("\r", "\n"), "", $params); $client->save(); ) ) ) ) ) else echo " Ellenőrizze a fájlnevet, a fájl nem létezik!";)

    Ez minden. Ideje összegezni a fenti opciók teljesítményét, és megtudni, melyik PHP fájlelemző bizonyult a legoptimálisabbnak a további felhasználáshoz.

    Mi a legjobb módja a fájlok kezelésének PHP-ben?

    A talált lehetőségek közül kiválasztani a legoptimálisabb, pl. a leggyorsabb, úgy döntöttem, hogy minden esetben meghatározom. Ehhez a linken található cikkben leírt technikát alkalmaztam.

    A PHP fájlolvasó függvényei önmagukban meglehetősen gyorsak, ezért annak érdekében, hogy a működési idejük legalább többé-kevésbé kézzelfogható számát elérjem, a tesztelt töredékekben szándékosan meghagytam az adatbázis-műveleteket, amelyek minden esetben azonosak voltak.

    A kényelem kedvéért úgy döntöttem, hogy a PHP-szkript futási idejét a harmadik tizedesjegyre kerekítem, pl. akár ezredmásodpercig is (bár valójában századokra korlátozódhatott volna).

    Emlékszem, amikor iskolás koromban a fizika tudományos munkámat (igen, volt ilyen élmény 🙂) az ő védelmére írtam az egyetemi tanárok előtt, állandóan szemrehányást tettem a kevés kísérlet miatt (mindegyikre 3 kísérletet csináltam). ügy). A "tudomány fényei" 100, nos, vagy legalább 10 kísérletben hívták a számokat, hogy összehasonlítsák a különböző helyzeteket, hogy végezzenek valamilyen összehasonlítást, és minimálisra csökkentsék az egyik véletlen fölényének valószínűségét a másikkal szemben.

    Igen, akkor sokat kaptam tőlük, de jól megtanultam az ajánlásaikat, hogy még most is emlékszem rá, bár azóta több mint 10 év telt el. Ráadásul ezek az ajánlások valóban a matematikai statisztika és a valószínűségszámítás törvényein alapultak.

    Nos, ebben a cikkben a jelenlegi kísérleteim során nem állítom magam tudományosnak, ezért feleslegesen nagynak tartottam a 100 kísérletet, és túl fárasztónak a lefolytatásukat.

    Ennek eredményeként úgy döntöttem, hogy a PHP fájlelemző minden egyes verziójához 10 kísérletre korlátozom magam, ami, mint kiderült, elég volt ahhoz, hogy egyértelmű vezetőt válasszak anélkül, hogy a tényekkel és a nyomokkal század- és ezredrészenként zsonglőrködnék. a felsőbbrendűség második.

    Az általam kifejlesztett PHP fájlelemzők futási idejére vonatkozó számítások eredményeit a következő táblázat mutatja be, és a PHP függvények szerint rendezve, amelyeken dolgoznak.

    Kísérlet fgets() fájl() fread() file_get_contents()
    1 9,147 9,722 10,539 2,008
    2 8,950 9,006 9,495 1,733
    3 8,821 8,845 9,207 1,642
    4 8,717 8,876 8,931 1,758
    5 9,010 9,091 8,703 1,635
    6 9,110 8,640 9,712 1,633
    7 9,074 9,626 9,13 1,645
    8 8,886 9,204 9,048 1,701
    9 8,667 8,918 9,438 1,713
    10 8,852 9,197 9,537 1,567
    Átlagos 8,923 9,113 9,374 1,704

    Amint láthatja, a 10 kísérlet mindegyikében a szkript végrehajtási ideje mellett úgy döntöttem, hogy kiszámítom a kórházi átlaghőmérsékletet 🙂

    Mégpedig az egyes PHP fájlelemzők futási idejének számtani átlaga, hogy a vezető azonosítható legyen.

    És kiderült, mint látható, az utolsó lehetőség, a funkció alapján megvalósítva file_get_contents(), amely beolvassa a fájl tartalmát egy karakterlánc-változóba, majd tömbbé alakítja és ciklusban dolgozza fel.

    A PHP fájlelemzők összes többi verziója körülbelül ugyanolyan sebességgel működik.

    Hogy pontosan miért előzte meg versenytársait, őszintén szólva fogalmam sincs. Csak azt feltételezhetem, hogy a fájl sztringbe olvasásának művelete segítségével file_get_contents() kevesebb erőforrást igényel, mint a karakterláncok kész tömbjének létrehozása fájl().

    Az fgets() és fread() feletti előny pedig annak tudható be, hogy használatuk előtt meg kell nyitni a fájlt az fopen() segítségével, ami időbe telik.

    Igen, valójában nem számít, mert. A számok magukért beszélnek: a függvény használatának köszönhetően file_get_contents() Az erre épülő PHP fájlelemző 5-ször gyorsabban működik, mint a többi, ami befolyásolta a gyakorlati használat melletti döntésemet.

    Fájl elemzése PHP-ben – Következtetések

    Mint az elején mondtam, a kísérleteim nem hibátlanok, és nem érdemes kizárólag a menetük során kapott eredményekre hagyatkozni, mert a gyorsaság ellenére sem file_get_contents() az én helyzetemben vannak esetek, amikor sokkal kényelmesebb és hatékonyabb az általam megadott többi PHP fájlelemző használata.

    Azt sem szabad elfelejteni, hogy a PHP maga egy szinkron programozási nyelv, pl. minden szerverművelet szekvenciálisan történik anélkül, hogy párhuzamos végrehajtásukat be lehetne állítani, beleértve a szerverprocesszor különböző magjait is.

    Ezért a PHP kódban írt műveletek végrehajtási idejét számos tényező befolyásolhatja, amelyek közül a legfontosabb a PHP alkalmazás futási idejének magterhelése.

    Ezt különösen a kísérletek során éreztem, amikor ugyanaz a PHP fájlelemző működött 9, majd 12, majd ismét 9 másodpercig három egymást követő iterációban a Windows Intéző banális elindítása miatt a második esetben, ami természetesen , szerver erőforrásokat is igényel.

    Ezen tulajdonságok ismeretében szinte egyszerre, egymás után, ugyanazzal a futó programkészlettel végeztem kísérleteket, hogy ne szórjam szét a szerver hardver erőforrásait.

    Ezért a jövőben, amikor hasonló kísérleteket végzünk PHP konstrukciókkal, hasonló módon járjunk el, mert. valójában ez az egyetlen módja annak, hogy a kísérleteket egyenlő feltételekhez hozzuk.

    Ha aszinkron szerveroldali nyelvekkel (C#, Java) vagy technológiákkal (például Node.js) dolgozik, lehetőség szerint hozzon létre egy külön szálat a kísérletekhez, amelyek egy dedikált processzormagon fognak futni.

    Nos, ha nem találsz teljesen tétlen magot (ami nem meglepő a modern szoftverek szintjén), akkor legalább megtalálod a legkönnyebben terhelt, vagy legalábbis olyan statikus terheléssel, amely nem változik az idő múlásával. .

    Összefoglalva azt szeretném mondani, hogy a cikkben megadott kódrészletek nem csak szöveges fájlok PHP-ben történő elemzésére használhatók, hanem tökéletesen alkalmasak más formátumokra is, például CSV fájlok elemzésére.

    A pozitív és negatív visszajelzéseiteket írja meg a cikk alatti megjegyzésekbe - szükségem van a véleményetekre a további fejlesztéshez 🙂

    Hamarosan találkozunk! 🙂

    P.S.: ha weboldalra van szüksége, vagy egy meglévőn módosítani kell, de erre nincs idő és kedv, akkor tudom ajánlani szolgáltatásaimat.

    Több mint 5 év tapasztalat professzionális weboldal fejlesztés. Dolgozik vele PHP, nyitott kocsi, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, Reagál, Szögletesés egyéb webfejlesztési technológiák.

    Különböző szintű projektek fejlesztésében szerzett tapasztalat: céloldalak, vállalati weboldalak, Online vásárlás, CRM, portálok. Beleértve a támogatást és a fejlesztést Nagy terhelésű projektek. Jelentkezéseit e-mailben küldje el [e-mail védett] .

    A szükséges információk egy külső oldalról történő elemzésével és feldolgozásával a webfejlesztők gyakran és többféle ok miatt szembesülnek: így tartalommal töltheti fel projektjét, dinamikusan tölthet be bizonyos információkat stb. .

    Ilyenkor a programozó azzal a kérdéssel szembesül: melyiket válassza a több tucat könyvtár közül? Ebben a cikkben megpróbáltuk figyelembe venni a legnépszerűbb lehetőségeket, és kiválasztani a legjobbat közülük.

    Reguláris kifejezések

    Annak ellenére, hogy a „törvényesek” jutnak először eszünkbe, ne használja őket valódi projektekhez.

    Igen, a reguláris kifejezések a legjobbak az egyszerű feladatokhoz, de használata sokkal nehezebbé válik, ha egy nagy és összetett HTML-kódot kell elemezni, amely ráadásul nem mindig egyezik az adott mintával, sőt szintaktikai hibákat is tartalmazhat.

    Ahelyett, hogy minden legkisebb kódmódosítással "befejezné" a reguláris kifejezést, javasoljuk az alábbi eszközök használatát – ez egyszerűbb, kényelmesebb és megbízhatóbb.

    XPath és DOM

    htmlSQL

    Ha nem használ PHP-t, megtekintheti a hasonló eszközök rövid listáját más programozási nyelvekhez.