Autor | Zpráva | ||
---|---|---|---|
matthew Profil |
#1 · Zasláno: 9. 2. 2010, 20:30:08
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 |
#2 · Zasláno: 9. 2. 2010, 20:35:06
matthew: vypíš si celé pole $array
|
||
matthew Profil |
#3 · Zasláno: 9. 2. 2010, 20:42:18
tiso:
„vypíš si celé pole $array“ http://projekty.webgrafika.eu/bugtest/regexp/ Výpis polí z obou skriptů. |
||
tiso Profil |
#4 · Zasláno: 9. 2. 2010, 21:08:02
matthew: ľutujem, skúšal som všetko možné a neprišiel som na to...
|
||
AM_ Profil |
#5 · Zasláno: 9. 2. 2010, 21:26:28
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 |
#6 · Zasláno: 9. 2. 2010, 21:29:36
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 |
#7 · Zasláno: 9. 2. 2010, 21:35:22
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 |
#8 · Zasláno: 9. 2. 2010, 22:26:59
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 |
#9 · Zasláno: 10. 2. 2010, 08:22:46
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. |
||
Časová prodleva: 14 let
|
0