PHP Regular Ifodalarida Oldindan Ko'rish

Ba'zan quyidagi turdagi masalani hal qilish kerak bo'ladi: 'aaa' satrini toping va uni '!' bilan almashtiring, lekin faqat 'aaa' dan keyin 'x' turgan paytda, 'x' ning o'zini esa almashtirmang. Agar biz masalani "o'ng qo'l bilan" hal qilishga harakat qilsak, hech narsa chiqmaydi:

php<?php
  preg_replace('#aaax#', '!', 'aaax'); // '!' bo'ladi, lekin '!x' bo'lishi kerak
?>

Masalani hal qilish uchun 'x' ni almashtirish shart emasligini aytish usuli kerak. Buning uchun (?= ) maxsus qavslari ishlatiladi, ular faqatgina ko'radi, lekin o'zi bilan olib ketmaydi.

Ushbu qavslar ijobiy oldindan ko'rish deb ataladi. Ijobiy - chunki 'x' (bizning holatimizda) bo'lishi kerak - faqat shunda almashtirish amalga oshiriladi.

Keling, ushbu qavslarni bizning masalamizni hal qilish uchun qo'llaymiz:

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

Salbiy oldindan ko'rish ham mavjud - (?! ) - u, aksincha, biror narsa bo'lmasligi kerakligini bildiradi. Quyidagi misolda almashtirish faqat 'aaa' dan keyin 'x' turmagan paytda amalga oshiriladi:

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

Funksiya nomlarini o'z ichiga olgan satr berilgan:

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

Satten funksiya nomlaridan iborat massiv oling.

Задание 2

Teg bilan satr berilgan:

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

Ushbu tegning atribut nomlaridan iborat massiv oling.