Regulárne výrazy v PHP
Popis skratiek
^ | začiatok reťazca |
$ | koniec reťazca |
. | jeden ľuvovoľný znak |
* | opakovanie, ľubovoľný počet |
+ | opakovanie jeden krát |
? | opakovánie maximálne jeden krát |
{min,max} | opakovanie od min do max |
{n} | opakovanie práve n-krát |
0(podvýraz) | vytvorenie podvýrazu |
[abc] | zoznam znakov (znaky a,b,c) |
[a-zA-Z] | zoznam znakov (všechna písmena) |
[^0-9] | negácia zoznamu (všetko okrem číslic) |
Triedy znakov
Pri písaní regulárnych výrazov môžeme použiť triedy znakov.
Výraz [[:trieda:]] predstavuje jeden znak z danej triedy.
Trieda | Popis |
alnum | alfanumerické znaky (písmená angl. abecedy + číslice) |
alpha | písmená anglickej abecedy |
blank | medzera a tabulátor |
cntrl | riadiace znaky |
digit | číslice |
graph | znaky majúce grafické znázornenie |
lower | malé písmená anglickej abecedy |
tlačiteľné znaky | |
punct | interpunkčné a ďalšie znaky (zavináč, zátvorky...) |
space | akákoľvek medzera (medzera, tabulátor, nový riadok, nová stránka...) |
upper | velké písmená anglickej abecedy |
xdigit | číslice šetnástkovej sústavy |
Napríklad regulárnímu výrazu [[:digit:]]{2} vyhovuje reťazec obsahujúci dvojmiestne číslo (54, ale aj sdf78fd).
Príklady
Funkcia strip_tags_attributes odstráni zo vstupného reťazca HTML tagy okrem vybraných (definovaných ako pole v premennej aAllowedTags) a odstráni atribúty HTMl tagov definované v premennej disabledAttributes tiež ako pole.
/*
* Strip HTML tags and selected attributes.
*
* Example:
* $aAllowedTags = array( '<p>', '<b>', '<strong>', '<ul>', '<ol>', '<li>' );
* $disabledAttributes = array( 'class', 'style', 'align', 'color', 'font' );
* strip_tags_attributes( $string, $aAllowedTags, $disabledAttributes );
*
* @author Kalle Sommer Nielsen
* @url www.php.net/strip-tags
*
* @param string $sSource: source string
* @param array $aAllowedTags: alllowed HTML tags
* @param array $aDisabledAttributes: removed attributes
* @return string return: parsed string
*/
function strip_tags_attributes( $sSource, $aAllowedTags = array( '<p>', '<b>', '<strong>', '<ul>', '<ol>', '<li>' ), $aDisabledAttributes = array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavaible', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragdrop', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterupdate', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmoveout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload' ) ) {
$sSource = stripslashes( $sSource );
if( empty( $aDisabledAttributes ) )
return ( strip_tags( $sSource, implode( '', $aAllowedTags ) ) );
return ( preg_replace( '/<(.*?)>/ie', "'<' . preg_replace(array('/javascript:[^\"\']*/i', '/(" . implode('|', $aDisabledAttributes) . ")[ \\t\\n]*=[ \\t\\n]*[\"\'][^\"\']*[\"\']/i', '/\s+/'), array('', '', ' '), stripslashes('\\1')) . '>'", strip_tags($sSource, implode('', $aAllowedTags)) ) );
}
Funkcia replaceLinks skonvertuje všetky mailové a URL adresy vo vstupnom reťazci na adresa s odkazom (anchor tagom).
/*
* Convert text with email and URL addres to text with anchors.
*
* 1. convert support@pogoda.in into <a href="mailto:support@pogoda.in">support@pogoda.in</a>
* 2. convert www.pogoda.in/new_york/eng/ into <a href="http://pogoda.in/new_york/eng/">pogoda.in/new_york/eng/</a>
* 3. convert www.pogoda.in/new_york/eng/ into <a href="http://www.pogoda.in/new_york/eng/">www.pogoda.in/new_york/eng/</a>
*
* @author Vladimir Luchaninov
* @url www.php.net/function.eregi-replace
*
* @param string $text: source string
* @return string return: parsed string
*/
function replaceLinks( $text ) {
$text = ereg_replace('[-a-z0-9.!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*', '<a href="mailto:\\0">\\0</a>',$text);
$text = ereg_replace('[a-zA-Z]+://(([.]?[a-zA-Z0-9_/-])*)', '<a href="\\0">\\1</a>',$text);
$text = ereg_replace('(^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*)', ' <a href="http://\\2">\\2</a>',$text);
return $text;
}
| Regulární výrazy v PHP 1, 27.1 (kB) | ||
| Regulární výrazy v PHP 2 | ||
Generátor typoscriptu
Vytvára typoscript pre bežné použitie. Generátor je jednoduchý na obsluhu, stačí vyplniť zopár položiek formulára.