Autor Zpráva
matthew
Profil
Zdravím a žádám o radu.
Tento regulární výraz funguje dobře.

<?php
$string = 'tak ano i ne';
preg_match("/(.*)(ano)(.*)(ne)/", $string, $array);
echo $array[2];
?>


Ale já bych potřeboval, aby bylo slovo "ano" nepovinné.
<?php
$string = 'tak ano i ne';
preg_match("/(.*)(ano)?(.*)(ne)/", $string, $array);
echo $array[2];
?>


A tam mi to nevypíše nic, zřejmě kvůli hladovosti okolních operátorů.
Měl by někdo řešení? Díky.
tiso
Profil
matthew: vypíš si celé pole $array
matthew
Profil
tiso:
vypíš si celé pole $array
http://projekty.webgrafika.eu/bugtest/regexp/
Výpis polí z obou skriptů.
tiso
Profil
matthew: ľutujem, skúšal som všetko možné a neprišiel som na to...
AM_
Profil
To se dá mnohem efektivněji vyřešit přes strpos :) zkus uvést skutečný problém, v praxi zřejmě nezjišťuješ slova "ano" a "ne".
panther
Profil
matthew:
Ale já bych potřeboval, aby bylo slovo "ano" nepovinné.
je-li nepovinné, tak ho nemusíš testovat v reguláru, ne? Jestli jsi to nezjednodušil až moc.
matthew
Profil
Používám to pro šablonový systém v redakčním systému:
<?php
preg_match_all("@<template for=\"dop_formular\" id=\"([0-9]+)\">((.*?)(<message>(.*?)</message>)(.*?)(<text>(.*?)</text>)(.*?)(<textarea>(.*)</textarea>)(.*?)(<file>(.*?)</file>)(.*?))</template>@s", $kod, $matches);
?>


A nepovinnou bych chtěl mít závorku (<file>(.*?)</file>).
tiso
Profil
matthew: nauč a používať \s* pre medzery, to by riešilo tvoj problém. Predpokladám že iné znaky okolo tých značiek tam nemáš.
matthew
Profil
tiso:
Právě že ne, šablona vypadá takto:
<template for="dop_formular" id="1">

<div class="formular">
<form method="post" action="admin/doplnky/formular/dop_formular_skript.php?form=%%form%%" onsubmit="this.hidden.value='2'; return true;">

<message>
<p class="%%type%%">%%message%%</p>
</message>

<text>
<label for="%%name%%" class="%%required%%">%%label%%</label> <input type="text" name="%%name%%" id="%%name%%" value="%%value%%" class="%%type%%"><br>
</text>

<textarea>
<label for="%%name%%" class="%%required%%">%%label%%</label> <textarea name="%%name%%" id="%%name%%">%%value%%</textarea><br>
</textarea>

<file>
<label for="%%name%%" class="%%required%%">%%label%%</label> <input type="file" name="%%name%%" id="%%name%%" class="file"><br>
</file>

<div id="hidden_area">  
  <label for="hidden">1+1=</label> <input type="text" size="1" name="hidden" id="hidden"><br>
  <hr class="clear">
</div>  

<hr class="clear">

<input type="submit" value="Odeslat" class="submit">
</form>
</div>

</template>


Pokud by to nijak nešlo, teď mě napadlo, jak to předělat jen s mezerami.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: