PHP тұрақты өрнектеріндегі символ топтары
Бірден бүкіл символдар тобын таңдауға мүмкіндік беретін
арнайы командалар бар. \d командасы 0-ден
9-ға дейінгі санды білдіреді. \w командасы
санды, латын әрпін немесе астын сызу белгісін белгілейді.
\s командасы бос орынды немесе бос орын символын
белгілейді: бос орын, жол ағымы, табуляция. Команданың
мәнін үлкен әріппен жазу арқылы инверттеуге болады:
мысалы, егер \d - сан болса, онда \D - сан емес.
Мысал
Барлық сандарды табайық:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'! !! !!!'
Мысал
Қайталау операторлары команда-топтарды бір тұтас
ретінде санайды, яғни топтастыру жақшалары
қажет емес. Келесі мысалда іздеу үлгісі
мынадай көрінеді: 0-ден 9-ға дейінгі
сан бір немесе бірнеше рет:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'! ! ! abc @@@'
Мысал
Келесі мысалда іздеу үлгісі мынадай көрінеді:
0-ден 9-ға дейінгі сан емес, бір немесе бірнеше рет кездесетін кез келген нәрсе:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'123!3!'
Мысал
Бұл мысалда іздеу үлгісі мынадай көрінеді: бос орын символы бір рет:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'1!12!123!abc!@@@'
Мысал
Бұл мысалда іздеу үлгісі мынадай көрінеді:
бос орын емес символ бір немесе бірнеше рет.
Бос орындармен бөлінген барлық ішкі жолдар
'!'-ге ауыстырылады:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'! ! ! ! !'
Мысал
Бұл мысалда іздеу үлгісі мынадай көрінеді:
сан немесе әріп бір немесе бірнеше рет.
Сандар мен әріптерден тұратын барлық ішкі жолдар
'!'-ге ауыстырылады:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'! ! ! ! @@@'
Мысал
Бұл мысалда іздеу үлгісі мынадай көрінеді:
сан емес және әріп емес бір немесе бірнеше рет.
Біздің жағдайда бұл анықтамаға '@@@' және
барлық бос орындар (олар да сандар мен әріптер емес)
сәйкес келеді. Соңында бір '!' екеніне назар
аударыңыз - оған ' @@@' жолы - алдында бос орын
бар түрлендірілді:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Нәтижесінде айнымалыға мынаны жазады:
'1!12!123!Abc!'
Практикалық тапсырмалар
Жол берілген:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Шеттерінде 'a' әріптері тұрған, ал олардың
арасында бір сан бар жолдарды табатын
тұрақты өрнек жазыңыз.
Жол берілген:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Шеттерінде 'a' әріптері тұрған, ал олардың
арасында кез келген сандар саны бар жолдарды
табатын тұрақты өрнек жазыңыз.
Жол берілген:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Шеттерінде 'a' әріптері тұрған, ал олардың
арасында кез келген сандар саны (соның ішінде
нөл сан да, яғни 'aa' жолы) бар жолдарды
табатын тұрақты өрнек жазыңыз.
Жол берілген:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Келесі түрдегі жолдарды табатын тұрақты өрнек жазыңыз:
шеттерінде 'a' және 'b' әріптері тұрған,
ал олардың арасында - сан емес.
Жол берілген:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Келесі түрдегі жолдарды табатын тұрақты өрнек жазыңыз:
шеттерінде 'a' және 'b' әріптері тұрған,
ал олардың арасында - әріп емес және сан емес.
Жол берілген:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Барлық бос орындарды '!'-ге ауыстыратын
тұрақты өрнек жазыңыз.