Krótkie tagi php nie działają. Funkcje PHP dla wyrażeń regularnych
Wyrażenia regularne są bardzo użyteczne narzędzie dla programistów. Za ich pomocą możesz znaleźć, zdefiniować lub zamienić tekst, słowa lub dowolne inne znaki. Dzisiejszy artykuł zawiera 15 najbardziej przydatnych wyrażeń regularnych, których będzie potrzebował każdy programista.
Wprowadzenie do wyrażeń regularnych
Wielu początkujących programistów uważa wyrażenia regularne za bardzo trudne do zrozumienia i używania. W rzeczywistości wszystko nie jest tak trudne, jak mogłoby się wydawać. Zanim przejdziemy bezpośrednio do wyrażeń regularnych, z ich użytecznym i wszechstronnym kodem, przyjrzyjmy się podstawom:
Składnia wyrażeń regularnych
Wyrażenie regularne | Oznacza |
bla | Ciąg „foo” |
^foo | Ciąg zaczyna się od „foo” |
no$ | Ciąg kończy się na „foo” |
^foo$ | „foo” występuje tylko raz w wierszu |
a, b lub c | |
dowolna mała litera | |
[^A-Z] | dowolny znak, który nie jest pisany wielkimi literami |
(gif|jpg) | Oznacza zarówno „gif”, jak i „jpeg” |
+ | Jedna lub więcej małych liter |
Dowolna liczba, kropka lub znak minus | |
^{1,}$ | Dowolne słowo, co najmniej jedna litera, cyfra lub _ |
()() | wy, wz, xy lub xz |
(^A-Za-z0-9) | Dowolny znak (nie cyfra ani litera) |
({3}|{4}) | Oznacza trzy litery lub 4 cyfry |
Funkcje PHP dla wyrażeń regularnych
Funkcjonować | Opis |
preg_match() | Funkcja preg_match() wyszukuje ciąg znaków zgodnie z podanym wzorcem, zwraca prawdę, jeśli ciąg zostanie znaleziony, a fałsz w przeciwnym razie |
preg_match_all() | Funkcja preg_match_all() znajduje wszystkie wystąpienia łańcucha podanego przez wzorzec |
preg_replace() | Funkcja preg_replace() działa w taki sam sposób, jak ereg_replace(), z wyjątkiem tego, że wyrażenia regularne mogą być używane zarówno do określenia wzorca wyszukiwania, jak i ciągu znaków, którym ma zastąpić znalezioną wartość. |
preg_split() | Funkcja preg_split() jest taka sama jak split(), z wyjątkiem tego, że wyrażenie regularne może być użyte jako parametr wzorca wyszukiwania. |
preg_grep() | preg_grep() przeszukuje wszystkie elementy tablicy wejściowej, zwracając wszystkie elementy pasujące do wzorca Wyrażenie regularne. |
preg_cytat() | Ucieka znaki wyrażeń regularnych |
Weryfikacja nazwy domeny
Sprawdzanie, czy ciąg jest poprawny Nazwa domeny
$url = "http://komunitasweb.com/"; if (preg_match("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $url)) ( echo "Twój adres URL jest w porządku ."; ) else ( echo "Nieprawidłowy adres URL."; )
Podświetlanie słów w tekście
Jest to bardzo przydatne wyrażenie regularne, możesz go użyć do znalezienia odpowiedniego słowa i podświetlenia go. Szczególnie przydatne do wyświetlania wyników wyszukiwania.
$text = "Przykładowe zdanie z KomunitasWeb, regex stał się popularny w programowaniu webowym. Teraz uczymy się regex. Według wikipedii wyrażenia regularne (w skrócie regex lub regexp, z liczbami mnogimi regexes, regexps lub regexen) są napisane język, który może być interpretowany przez procesor wyrażeń regularnych”; $text = preg_replace("/b(regex)b/i", " 1", $tekst); echo $tekst;
Podświetlanie wyników wyszukiwania na blogu WordPress
Jak wspomniano w poprzednim przykładzie, ten przykład kodu jest przydatny w wynikach wyszukiwania i jest doskonałym sposobem na zaimplementowanie tej funkcji w blogu Wordpress.
Otwórz plik search.php i znajdź funkcję_title(). Zastąp go następującym kodem:
echo $tytuł;
Teraz nad tą linią dodaj ten kod:
\0", $tytuł); ?>
Zapisz plik search.php i otwórz style.css. Dodaj następujący wiersz:
Strong.search-fragment ( tło: żółty; )
Pobieranie wszystkich obrazów z dokumentu HTML
Jeśli kiedykolwiek potrzebowałeś pobrać wszystkie obrazki ze strony internetowej, ten kod powinien być łatwy do stworzenia.Możesz łatwo stworzyć program ładujący obrazki, korzystając z mocy cURL.
$obraz = tablica(); preg_match_all("/(img|src)=("|\")[^"\">]+/i", $data, $media); unset($dane); $data = preg_replace("/(img|src)("|\"|="|=\")(.*)/i", "$3", $media); foreach ($dane jako $url) ( $info = pathinfo($url); if (isset($info["rozszerzenie"])) ( if (($info["rozszerzenie"] == "jpg") || ($info["rozszerzenie"] == "jpeg") || ($info["rozszerzenie"] == "gif") || ($info["rozszerzenie"] == "png")) array_push($ obrazy, $url); ) )
Usuń zduplikowane słowa (bez rozróżniania wielkości liter)
Czy często powtarzasz słowa podczas pisania? To wyrażenie regularne pomoże.
$text = preg_replace("/s(w+s)1/i", "$1", $text);
Usuwanie powtarzających się znaków interpunkcyjnych
To samo, tylko dla interpunkcji. Pożegnaj się z podwójnymi przecinkami.
$text = preg_replace("/.+/i", ".", $text);
Wyszukaj tagi XML/HTML
Ta prosta funkcja przyjmuje dwa argumenty. Pierwszy to tag, który musisz znaleźć, a drugi to zmienna zawierająca XML lub HTML. Ponownie, ta funkcja jest bardzo wygodna w użyciu z cURL.
Funkcja get_tag($tag, $xml) ( $tag = preg_quote($tag); preg_match_all("(<".$tag."[^>]*>(.*?)".$tag.">.")", $xml, $matches, PREG_PATTERN_ORDER); zwróć $dopasowania; )
Wyszukaj tagi XHTML/XML z określoną wartością atrybutu
Ta funkcja jest bardzo podobna do poprzedniej, z wyjątkiem tego, że możesz ustawić żądany atrybut dla tagu. Na przykład możesz łatwo znaleźć
Funkcja get_tag($attr, $value, $xml, $tag=null) ( if(is_null($tag)) $tag = "\w+"; else $tag = preg_quote($tag); $attr = preg_quote($ attr); $wartość = preg_quote($wartość); $tag_regex = "/<(".$tag.")[^>]*$attr\s*=\s*". "(["\"])$value\\2[^>]*>(.*?)<\/\\1>/" preg_match_all($tag_regex, $xml, $dopasowania, PREG_PATTERN_ORDER); zwróć $dopasowania; )
Znajdź szesnastkowe wartości kolorów
Kolejne przydatne narzędzie dla programisty! Pozwala znaleźć/sprawdzić szesnastkową wartość koloru.
$string = "#555555"; if (preg_match("/^#(?:(?:(3))(1,2))$/i", $string)) ( echo "przykład 6 udany."; )
Wyszukiwanie tytułu artykułu
Ten fragment kodu znajdzie i wyświetli tekst wewnątrz tagów
$fp = fopen("http://www.catswhocode.com/blog","r"); while (!feof($fp))( $strona .= fgets($fp, 4096); ) $titre = eregi("
Parsowanie dziennika Apache
Większość witryn działa na dobrze znanym serwerze WWW Apache. Jeśli Twoja witryna jest jedną z nich, dlaczego nie użyć PHP i wyrażeń regularnych do parsowania dzienników Apache?
//Dzienniki: serwer WWW Apache //Pomyślne trafienia tylko do plików HTML. Przydatne do liczenia liczby odsłon. "^((?#IP klienta lub nazwa domeny)S+)s+((?#uwierzytelnianie podstawowe)S+s+S+)s+[((?#data i godzina)[^]]+)]s+"(?: GET|POST|HEAD) ((?#plik)/[^ ?]+?.html?)??((?#parametry)[^ ?]+)? HTTP/+"s+(?#kod statusu)200s+((?#przesłane bajty)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#klient użytkownika )[^"]*)"$" //Dzienniki: serwer WWW Apache //tylko błędy 404 "^((?#adres IP klienta lub nazwa domeny)S+)s+((?#uwierzytelnianie podstawowe)S+s+S+) s+[((?#data i godzina)[^]]+)]s+"(?:GET|POST|HEAD) ((?#plik)[^ ?]+)??((?#parametry)[ ^ ?"]+)? HTTP/+"s+(?#kod statusu)404s+((?#przesłane bajty)[-0-9]+)s+"((?#referrer)[^"]*)"s+"((?#klient użytkownika )[^"]*)"$"
Zastępowanie podwójnych cudzysłowów inteligentnymi cudzysłowami
Jeśli jesteś miłośnikiem typografii, pokochasz to zamiennik wyrażenia regularnego dla regularnego podwójne cudzysłowy, do inteligentnych cytatów. Podobne wyrażenie regularne jest używane w wordpressie w treści strony.
Preg_replace("B"b([^"x84x93x94rn]+)b"B", "?1?", $text);
Kompleksowa kontrola hasła
To wyrażenie regularne zapewni, że w polu tekstowym zostanie wprowadzonych co najmniej sześć znaków, cyfr, łączników i podkreśleń.
Pole tekstowe musi zawierać co najmniej jedną wielką literę, jedną małą literę i jedną cyfrę.
"A(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?)(?=[-_a-zA-Z0-9]*?) [-_a-zA-Z0-9](6,)z"
WordPress: używanie wyrażeń regularnych do pobierania obrazów z postu
Ponieważ wielu z was jest Użytkownicy WordPressa, możesz potrzebować kodu, który pozwoli Ci pobrać wszystkie obrazki z tekstu artykułu i je wyświetlić.
Aby użyć tego kodu, po prostu wklej go do dowolnego pliku w swoim motywie.
Treść postu; $szWzorzecWyszukiwania = "~ ]* />~"; // Uruchom preg_match_all, aby pobrać wszystkie obrazy i zapisać wyniki w $aPics preg_match_all($szSearchPattern, $szPostContent, $aPics); // Sprawdź, czy mamy co najmniej 1 obraz $iNumberOfPics = count($aPics); if ($iNumberOfPics > 0) ( // Teraz możesz zrobić z obrazami wszystko co trzeba // W tym przykładzie obrazy są wyświetlane tylko dla ($i=0; $i< $iNumberOfPics ; $i++) {
echo $aPics[$i];
};
};
endwhile;
endif;
?>
Generowanie automatycznych emotikonów
Inną funkcją używaną w wordpressie jest to, że pozwala automatycznie zastępować symbole buźki obrazem buźki.
$texte="Tekst z buźką:-)"; echo str_replace(":-)"," ", $tekst);
JavaScript jest zablokowany w Twojej przeglądarce. Zezwól na działanie JavaScriptu w tej witrynie!
strip_tags
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
strip_tags- Usuwa tagi HTML i PHP z ciąguOpis
strunowy strip_tags(ciąg str[, ciąg dozwolonych_tagów])Ta funkcja zwraca ciąg znaków z usuniętymi znacznikami HTML i PHP. Do usuwania tagów używany jest automat podobny do używanego w funkcji fgetss() .
Opcjonalny drugi argument może służyć do określenia tagów, których nie należy usuwać.
UwagaKomentarz: Argument allowable_tags został dodany w PHP 3.0.13 i PHP 4.0b3. Z Wersje PHP 4.3.0 usuwa również komentarze HTML.
Dlatego strip_tags() nie sprawdza poprawności kodu HTML, niedokończone tagi mogą doprowadzić do usunięcia tekstu, który nie jest zawarty w tagach.
Przykład 1: Przykład użycia strip_tags()
$tekst = "Ustęp.
Trochę więcej tekstu"; echo strip_tags($text); echo "\n\n-------\n"; // nie usuwajecho strip_tags($text, "
"); // Umożliwić ,,echo strip_tags($text, " ");
Ten przykład wygeneruje:
Ustęp. Trochę więcej tekstu -------
Ustęp.
Jeszcze trochę tekstu
UwagaTa funkcja nie zmienia atrybutów tagów określonych w argumencie allowable_tags, w tym style i onmouseover.
Od PHP 5.0.0 strip_tags() bezpieczna obsługa danych w postaci binarnej.
Funkcja ta ma istotną wadę - jest to sklejanie słów przy usuwaniu tagów. Ponadto funkcja ma luki. Alternatywna funkcja podobna do strip_tags:
c" * - "brudny" html jest poprawnie przetwarzany, gdy znaki można znaleźć w wartościach atrybutów tagów< >* - uszkodzony html jest przetwarzany poprawnie * - komentarze, skrypty, style, PHP, Perl, kod ASP, tagi MS Word, CDATA są wycinane * - tekst jest automatycznie formatowany, jeśli zawiera kod html * - ochrona przed podróbkami typu: "<
Zobacz także opis funkcji
Ostatnia aktualizacja 27 listopada 2019 r. 07:10:59 (UTC/GMT +8 godzin)
Składnia tagów otwierających i zamykających w PHP
Istnieją cztery różne pary tagów otwierających i zamykających, których można używać w php. Oto lista tagów.
- domyślna składnia
- krótkie otwarte Tagi
- Pomiń zamykający tag PHP na końcu pliku
Domyślna składnia
Domyślna składnia zaczyna się od „ php" and ends with "?>".
Przykład:
krótkie otwarte Tagi
Krótkie tagi zaczynają się od „" and ends with "?>Tagi krótkie style są dostępne tylko wtedy, gdy są włączone w pliku konfiguracyjnym php.ini na serwerach.
Przykład:
echo "PHP example with short-tags"; ?>
Pomiń zamykający tag PHP na końcu pliku
Zaleca się pominięcie zamykającego znacznika PHP w pliku zawierającym tylko kod PHP, aby uniknąć wystąpienia przypadkowych białych znaków lub nowych wierszy dodanych po znaczniku zamykającym PHP, co może rozpocząć buforowanie wyjścia, powodując nieoczekiwane efekty.
Przykład:
Rozdzielanie instrukcji PHP
W PHP instrukcje są zakończone średnikiem (;), jak C lub Perl. Znacznik zamykający bloku kodu PHP automatycznie oznacza średnik, nie ma potrzeby, aby średnik kończył ostatnią linię bloku PHP.
Zasady separacji oświadczeń
- średnik
- I/LUB
- zamykający tag PHP
Prawidłowe kody
W powyższym przykładzie obecne są zarówno średnik(;) jak i zamykający znacznik PHP.
W powyższym przykładzie nie ma średnika(;) po ostatniej instrukcji, ale obecny jest zamykający tag PHP.
W powyższym przykładzie w ostatniej instrukcji znajduje się średnik(;), ale nie ma zamykającego znacznika PHP.
Rozróżnianie wielkości liter w PHP
W PHP funkcje zdefiniowane przez użytkownika, klasy, kluczowe słowa kluczowe języka (na przykład if, else, while, echo itp.) nie uwzględniają wielkości liter. Dlatego trzy stwierdzenia echa w poniższym przykładzie są równe.
Przykład 1
"); ECHO("Uczymy się rozróżniania wielkości liter w PHP
"); EcHo("Uczymy się rozróżniania wielkości liter w PHP
");
?>
Uczymy się rozróżniania wielkości liter w PHP Uczymy się rozróżniania wielkości liter w PHP
Z drugiej strony we wszystkich zmiennych jest rozróżniana wielkość liter.
Rozważmy następujący przykład. Tylko pierwsza instrukcja wyświetla wartość jako $kwota, ponieważ $kwota, $KWOTA, $kwota to trzy różne zmienne.
przykład-2
"); echo("Kwota wynosi: $KWOTA
"); echo("Kwota wynosi: $amoUNT
");
?>
Kwota wynosi: 200 Kwota wynosi: Kwota wynosi:
Niewrażliwość na białe znaki w PHP
Ogólnie rzecz biorąc, białe znaki nie są widoczne na ekranie, w tym spacje, tabulatory i znaki końca wiersza, tj. powroty karetki. W PHP białe znaki nie mają znaczenia w kodowaniu.Możesz podzielić jednowierszową instrukcję na dowolną liczbę wierszy lub kilka oddzielnych instrukcji razem w jednym wierszu.
Poniższe dwa przykłady są takie same:
Przykład:
"; echo "Jego klasa to: $class i Roll No. to $roll_no"; ) student_info("David Rayy", "V", 12) ?>
Przykład: Zaawansowana niewrażliwość na białe znaki
"; echo "Jego klasa to: $class i Roll No. to $roll_no"; ) student_info("David Rayy", "V", 12) ?>
Imię i nazwisko ucznia to: David Rayy Jego klasa to: V i Roll No. jest 12
Przykład: niewrażliwość na białe znaki ze znakami tabulacji i spacji
W poniższym przykładzie spacje i tabulatory są używane w operacji numerycznej, ale w obu przypadkach $xyz zwraca tę samą wartość.
"; // tabulatory i spacje $xyz = 11 + 12; echo $xyz; ?>
PHP: Pojedyncza linia i wiele linii Komentarze
komentarz w jednej linii
PHP obsługuje dwa różne sposoby komentowania.
# To jest komentarz jednowierszowy.
//To kolejny sposób na komentarz jednowierszowy.
Przykład:
komentarze wielowierszowe
PHP obsługuje komentarze w stylu "C". Komentarz zaczyna się parą znaków /* i kończy parą znaków */.
/* To jest test wielu komentarzy,
a te linie zostaną zignorowane
w momencie realizacji */
Przykład:
Komentarze wielowierszowe nie mogą być zagnieżdżone
Pierwszy skrypt PHP
Oto pierwszy skrypt PHP, który wyświetli "Hello World..." w przeglądarce internetowej.
<?php echo "Witaj świecie..."; ?>
Tagi informują serwer sieciowy, aby traktował wszystko wewnątrz tagów jako kod PHP do uruchomienia. Kod jest bardzo prosty. Używa wbudowanej funkcji PHP "echo" do wyświetlania tekstu "Hello World..." na stronie internetowej. Wszystko poza tymi tagami jest wysyłane bezpośrednio do przeglądarki.
prezentacja obrazkowa
Łącząc PHP i HTML
Składnia PHP ma zastosowanie tylko w tagach PHP.
PHP można osadzić w HTML i umieścić w dowolnym miejscu dokumentu.
Kiedy PHP jest osadzone w dokumentach HTML i PHP analizuje ten dokument, jest interpretowany jako sekcja załączona ze znacznikiem otwierającym () PHP i zignoruj resztę dokumentu.
W poniższym przykładzie PHP i HTML są widoczne razem.
ćwicz tutaj online:
Kiedy interpreter PHP przetwarza plik, szuka znaczników, które wskazują, gdzie zaczyna się i kończy kod PHP. Wszystko, co znajduje się poza parą znaczników początkowych i końcowych, zostanie zignorowane przez interpreter (tj. zostanie po prostu przekazane serwerowi WWW bez zmian). Na przykład plik przekazany do interpretera PHP ma następujący kod:
Zostanie to zignorowane przez interpreter i zostanie po prostu przekazane bez zmian, najpierw serwerowi WWW, który z kolei przekaże do przeglądarki.
To również zostanie zignorowane przez interpreter i zostanie po prostu przekazane do serwera WWW w takiej postaci, w jakiej jest.
Jeśli plik zawiera tylko kod PHP lub znajduje się na samym końcu pliku, czyli nie ma po nim nic, wówczas tag zamykający jest najlepiej pomijany (nieokreślony). Pomaga to uniknąć dodawania losowych białych znaków po znaczniku końcowym PHP, co może powodować niepożądane efekty.
PHP pozwala również na krótki tag otwierający вместо
echo "Hello World!"; ?>
Białe znaki
W kodzie PHP możesz używać białych znaków: spacji, tabulatorów i łamania linii. Liczba białych znaków nie jest ograniczona i zależy od preferencji programisty, którego głównym celem jest stworzenie czytelnego i czytelnego tekstu programu (kodu źródłowego).
Poniższy przykład pokazuje kod PHP, który używa białych znaków:
Przykładowy kod mógłby zostać napisany w jednej linii bez użycia białych znaków, ale taki kod byłby mniej czytelny: