PHP රෙගුලරු ප්‍රකාශන වල ඉදිරිපස බැලීම

සමහර විට මෙවැනි කාර්යයක් විසඳීමට අවශ්‍ය වේ: අනුපිළිවෙල 'aaa' සොයා එය '!' ලෙස ප්‍රතිස්ථාපනය කරන්න, නමුත් කෙලින්ම 'aaa' ට පසුව 'x' පවතී නම් පමණි, සහ 'x' ස්වයංක්‍රීයව ප්‍රතිස්ථාපනය නොකරන්න. අපි මෙම කාර්යය 'කෙලින්ම' විසඳීමට උත්සාහ කළහොත්, එය සාර්ථක නොවනු ඇත:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // වන්නේ '!', නමුත් '!x' විය යුතුය
?>

මෙම කාර්යය විසඳීම සඳහා, 'x' ප්‍රතිස්ථාපනය නොකළ යුතු බව පැවසීමේ ක්‍රමයක් අවශ්‍ය වේ. මෙය සිදු කරනු ලබන්නේ විශේෂ වරහන් (?= ) භාවිතා කරමිනි, එය සරලව බලාගෙන සිටින නමුත් ග්‍රහණය කර නොගනී.

මෙම වරහන් හැඳින්වෙන්නේ ධනාත්මක ඉදිරිපස බැලීම ලෙසය. ධනාත්මක - මන්ද යත් 'x' (අපගේ නඩුවේදී) පැවතිය යුතුය - එවිට පමණක් ප්‍රතිස්ථාපනය සිදුවනු ඇත.

අපි අපගේ කාර්යය විසඳීම සඳහා මෙම වරහන් යොදා ගනිමු:

php<?php
  preg_replace('#aaa(?=x)#', '!', 'aaax'); // ආපසු එවන්නේ '!x'
?>

ඍණාත්මක ඉදිරිපස බැලීම ද ඇත - (?! ) - එය, ඊට පටහැනිව, යම්කිසි දෙයක් පවතිය නොහැකි බව පවසයි. පහත උදාහරණයේ දී ප්‍රතිස්ථාපනය සිදුවන්නේ, කෙලින්ම 'aaa' ට පසුව 'x' නොපවතී නම් පමණි:

php<?php
  preg_replace('#aaa(?!x)#', '!', 'aaab'); // ආපසු එවන්නේ '!b'
?>
Задание 1

ශ්‍රිත නාම අඩංගු පේළියක් ලබා දී ඇත:

php<?php
  $str = 'func1() func2() func3()';
?>

පේළියෙන් ශ්‍රිත නාම වල අරාව ලබා ගන්න.

Задание 2

ටැගයක් සහිත පේළියක් ලබා දී ඇත:

php<?php
  $str = '<a href="" class="eee" id="zzz">';
?>

මෙම ටැගයේ ගුණාංග නාම වල අරාව ලබා ගන්න.