Kenraalishenkinen ongelma PHP:ssä
Kenraalishenki on erikoismerkki PHP:ssä. Tämä tarkoittaa, että merkkijonossa, jos haluamme, että kenraalishenki edustaa itseään, meidän on kaksinkertaistettava se:
<?php
$str = '\\ \\\\ \\\\\\'; // itse asiassa merkkijono '\ \\ \\\'
?>
Kenraalishenki on myös erikoismerkki säännöllisissä lausekkeissa. Tämä tarkoittaa, että säännöllisen lausekkeen sisällä, jotta kenraalishenki edustaisi itseään, se on kirjoitettava jopa neljä kertaa:
<?php
echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // tulostaa '! ! !!'
?>
Kirjoitetaan nyt säännöllinen lauseke, jossa
hakumalli on: kenraalishenki
yksi tai useampi kerta. Tässä tapauksessa me
kirjoitamme operaattorin + aivan 4
merkille ennen sitä ilman ryhmittelyä:
<?php
echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // tulostaa '! ! !'
?>
Annettu merkkijono:
<?php
$str = 'a\\b c\\d e\\f';
?>
Etsi tästä merkkijonosta kaikki alimerkkijonot mallin mukaisesti kirjain, kenraalishenki, kirjain.
Annettu merkkijono:
<?php
$str = 'a\\b c\\\\d e\\\\\\f';
?>
Etsi tästä merkkijonosta kaikki alimerkkijonot mallin mukaisesti kirjain, kenraalishenki mielivaltainen määrä kertoja, kirjain.