PHP.mk документација

Условни подшари

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

regexp.reference.conditional.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека regexp.reference.conditional.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
Условни подшари

Референца за `regexp.reference.conditional.php` со подобрена типографија и навигација.

regexp.reference.conditional.php

Условни подшари

Можно е да се предизвика процесот на совпаѓање да се придржува до подшема условно или да избира помеѓу две алтернативни подшеми, во зависност од резултатот на тврдењето, или дали претходната подшема за фаќање се совпаднала или не. Двете можни форми на условна подшема се

(?(condition)yes-pattern)
(?(condition)yes-pattern|no-pattern)

Можно е да се предизвика процесот на совпаѓање да се придржува до подшема условно или да избира помеѓу две алтернативни подшеми, во зависност од резултатот на тврдењето, или дали претходната подшема за фаќање се совпаднала или не. Двете можни форми на условна подшема се

Ако условот е задоволен, се користи шемата за да; инаку се користи шемата не (ако е присутна). Ако има повеќе од две алтернативи во подшемата, се јавува грешка при компајлирање. PCRE_EXTENDED Постојат два вида услови. Ако текстот помеѓу заградите се состои од низа цифри, тогаш условот е задоволен ако подшемата за фаќање со тој број претходно се совпаднала. Разгледајте ја следнава шема, која содржи незначајни празни места за да биде почитлива (претпоставете го

( \( )? [^()]+ (?(1) \) )

опцијата) и да ја подели на три дела за лесно дискутирање: trueПрвиот дел се совпаѓа со опционална отворачка заграда, и ако тој знак е присутен, го поставува како прв фатен подниза. Вториот дел се совпаѓа со еден или повеќе знаци што не се загради. Третиот дел е условна подшема што тестира дали првиот сет на загради се совпаднал или не. Ако се совпаднал, односно, ако субјектот започнал со отворачка заграда, условот е

, и затоа се извршува шемата да и се бара затворачка заграда. Инаку, бидејќи шемата не не е присутна, подшемата не се совпаѓа со ништо. Со други зборови, оваа шема се совпаѓа со низа од не-загради, опционално опкружени со загради. (R)Ако условот е низата

, тој е задоволен ако е направен рекурзивен повик до шемата или подшемата. На „врвно ниво“, условот е лажен.

(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )

Ако условот не е низа од цифри или (R), тој мора да биде тврдење. Ова може да биде позитивно или негативно тврдење за предвидување напред или назад. Разгледајте ја оваа шема, повторно содржи незначајни празни места, и со двете алтернативи на вториот ред:

Белешки од корисници 1 белешка

Анонимен
пред 15 години
Repetition of a subpattern will repeat conditionals that are contained inside it, updating subpattern matches with iteration.

Consider the following code, which scans thru HTML, keeping track of angle brackets "<" ">".  If open bracket "<" matches, then closing bracket ">" must follow before repetition can possibly end.  That way regex will effectively match only outside of tags. 

<?php
$pattern='%(*ANY)(.*?(<)(?(2).*?>)(.*?))*?\'\'%s';
$replace='\1Fred';
$subject=
'<html><body class=\'\'>\'\' went to '\'\meyer and ran 
into <b>\'\'</b>.
</body></html>'
echo preg_replace("%(*ANY)(.*?((<)(?(3).*?>).*?)*?)\'\'%s",'\1Fred',$subject);
?>

Output will be:
'<html><body class=\'\'>Fred went to Fredmeyer and ran 
into <b>Fred</b>.
</body></html>'
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.