PHP RegEx

Pomocnik i przykłady zastosowań wyrażeń regularnych.

Narzędzia

Przykłady

RegEx img tag find/extract src img URL

Znajduje cały tag z obrazkiem w tekście oraz jego adres.

# Pattern: /<img .*?src=["'](.+?)["'].*?>/i
# Example PHP:
if (preg_match('/<img .*?src=["'](.+?)["'].*?>/i', $textHTML, $images)) {
$textHTML1 = $images[0].$textHTML1; // Wstawia cały tag img
$textHTML2 = "<img src="$images[1]" />$textHTML2"; //Wstawia tylko adres src
}

Jeśli chcemy znaleźć tylko obrazki o danym rozszerzeniu (np. tylko jpg lub png) i/lub odsiać gify (zazwyczaj gif to przycisk typu email this lub reklama), należy użyć:

# Pattern: /<img [^>]*?src="([^"']*.(jpe?g|png))".*?>/Ui
# Example PHP:
if (preg_match('/<img [^>]*?src=["']([^"']*.(jpe?g|png))["']/Ui', $textHTML, $images)) {
$textHTML1 = $images[0].$textHTML1; // Wstawia cały tag img
$textHTML2 = "<img src="$images[1]" />$textHTML2"; //Wstawia tylko adres src
}

RegEx img tag insert http domain URL

Uzupełnia adres domeny w tagach <img />, jeśli go brakuje (podpowiedź na temat negacji na regular-expressions.info).

# Pattern: /src=["']((?!http)[^"']*)["']/i
# Example PHP:
$textHTML = preg_replace('/src=["']((?!http)[^"']*)["']/i', 'src="'.$URL.'$1"', $textHTML);

RegEx extract domain URL without www, rss

Wyciąga z adresu URL samą domenę bez http(s) i prefiksów www lub rss (np. http://www.engadget.com/2011/05/ zamienia na engadget.com).

# Pattern: 'https?://|www.|rss.|/.*'i
# Example PHP:
$domainName = preg_replace("'https?://|www.|rss.|/.*'i", "", $textWithURL);

RegEx replace plain URL with link and domain name

Zamienia w tekście znalezione samotne łańcuchy URL i robi z nich linki (np. http://www.engadget.com/2011/05/ zamienia na <a href=”http://www.engadget.com/2011/05/”>engadget.com</a>).

# Pattern: 'b(https?|ftp|file)://(.*?[^/]+)([-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])'i
# Example PHP:
$textPlain = preg_replace("'b(https?|ftp|file)://(.*?[^/]+)([-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])'i", '<a href="" target="_blank">2</a>', $textPlain);

RegEx clean/strip HTML tags except one or tags group

Usuwa z HTML wszystkie tagi za wyjątkiem wybranych.

# Pattern for anchor only: <(?!/?a(?=>|s.*>))/?.*?>
# Example PHP for tags a, i, b, strong, em etc.:
$strippedHTML = preg_replace('/<(?!/?(a|i|em|b|strong)(?=>|s.*>))/?.*?>/i', '', $stringHTML);

Dyskusja

Wypowiedz się