Pogled naprej v regularnih izrazih PHP

Včasih je treba rešiti nalogo takšne vrste: najti niz 'aaa' in ga zamenjati z '!', vendar le, če je za 'aaa' 'x', sam 'x' pa ne zamenjati. Če poskušamo rešiti nalogo 'na slepo', nam ne bo uspelo:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // bo '!', moralo bi biti '!x'
?>

Za rešitev naloge potrebujemo način, da povemo, da 'x' ne smemo zamenjati. Naredi se to s posebnimi oklepaji (?= ), ki samo gledajo, vendar ne vzamejo s seboj.

Ti oklepaji se imenujejo pozitivni pogled naprej. Pozitivni - ker mora biti 'x' (v našem primeru) - šele takrat bo prišlo do zamenjave.

Uporabimo te oklepaje za rešitev naše naloge:

php<?php
  preg_replace('#aaa(?=x)#', '!', 'aaax'); // vrne '!x'
?>

Obstaja tudi negativni pogled naprej - (?! ) - ta, nasprotno, pravi, da nečesa ne sme biti. V naslednjem primeru bo prišlo do zamenjave le, če za 'aaa' ni 'x':

php<?php
  preg_replace('#aaa(?!x)#', '!', 'aaab'); // vrne '!b'
?>
Задание 1

Podan je niz, ki vsebuje imena funkcij:

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

Pridobite tabelo imen funkcij iz niza.

Задание 2

Podan je niz z oznako:

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

Pridobite tabelo imen atributov te oznake.