Autor Zpráva
Radim24
Profil *
Ahoj. Můžete miněkdo zkusit poradit?

Snažím se z následujícího select-option dostat řetězec s tagem, tak aby nezahrnoval text uvnitř a dosadit do jako hodnotu do option-value.... tedy aby tam bylo např. value="<b></b>"

$myform_str="<select class=input name="tags" size=5 size=1>".
"<option class=select value="0"><b>nadpis oddílu</b></option>".
"<option class=select value="1"><u><i>podnadpis oddílu</i></u></option>".
"<option class=select value="2"><i>komentář, citace</i></option>".
"<option class=select value="3"><u>podtržení</u></option>".
"<option class=select value="4"><P id=i>odsazení odstavce</option>";

// ČÁSTEČNÝ ÚSPĚCH: preg_match_all("@.*(?=</option>)@",$myform_str,$arr); // (?<=option)
preg_match_all("@(?=<option).*(?=</option>)@",$myform_str,$arr);
print_r($arr); // // (?=</option>).*?

zkoušel jsem tvrzení o následujícím i o předcházejícím. Povedlo se mi akorád odfiltrovat to option na konci.

Snažím se dosadit tvrzení o následujícím před .* které by říkalo, že před .* je <option , ale aby <option nebzl ve výsledku. Pak tam chi přidat, že tomu .* předchází také value= a že dále může být jeden nebo vícde tagů. Problémje ale v tom, že při tvrzení o následujícím mi to vrací celý řetězec i s tím prvním option.
tiso
Profil
Ešte raz čo chceš? A kvôli čomu?
Joker
Profil
Jak to chápu já:
Máte <option>, v tom HTML značku a nějaký další text. A chcete vypreparovat tu HTML značku
Je to tak?
Radim24
Profil *
v tom option je text s tagem <b>tučné</b> a já chci vrátit ten tag <b></b> - může tam ale taky být např. <u><i>italic, underline</i></u> apod. Zkrátka to co není tag odstranit.
tiso
Profil
Toto: >blabla< => >< ?
To je zároveň návod na riešenie...
Radim24
Profil *
Tiso a to je co?
>blabla< => >< ?
To je regularní výraz??? To asi ne tak poraď pleeese.
tiso
Profil
Samozrejme že to nie je regulárny výraz... Som sa Ťa pýtal či chceš z textu ">blabla<" spraviť text "><" alebo niečo iné...
Regulárne výrazy nepoužívam moc často, tak sa nebudem kvôli Tvojmu problému trápiť - tráp sa ty!
Radim24
Profil *
Aha. Podívej, kdyby šlo jenom o toto: z <b>slovo</b> tak to urobým tvrzením o předchozím a tvrzením o následujícím. Normáně bych to slovo vytáh. Jenže ono to je komplikovanější. je tam přece <option...><b>slovo</b></option> . Tedy ano, odsud bzch takz mohl vzt8hnout to co je moye <b></b>, ale ja mu potrebuju rict ze ta znacka b se nachazi mezi znackou option.

Ještě se to komlikuje tim, že tam nemusi byt jen jeden tag b, muze tam byt <i><u>slovo</u></i> tedy vice tagu. A ja chci ty tagy dostat, ale bey textu uvnitr. Taky tam mam tag <p class=i>slovo ... a ten neni uzavřeny. Tento tak používám k odsazení prvního řádku doprava. Cele to má složit k tomu, že z option si vyberu styl pisma nebo nadpis, a ten mi potom dosadi dany tag do textarea. Chápeš?
tiso
Profil
Cele to má složit k tomu, že z option si vyberu styl pisma nebo nadpis, a ten mi potom dosadi dany tag do textarea
A to chceš robiť takto? Preboha... Cez PHP? A čo takto Javascript? Toto je hádam jediná použiteľná vec ktorá sa cez JS robí...
gaminn
Profil *
Radim24
Použij prostě javascript

<option value="1">tučně</option>

onchange nastane událost, která vloží požadovaný tag (ten zjistíš z definovaného pole: tagy = new Array(); tagy[1] = '<b></b>'; .....) na určené místo.
Radim24
Profil *
Ale mě přijde zbytečné používat javascript, když formulář generuju automaticky přes php. Je zbytečné přidávat javascript, když stačí přidat regular v php ještě než vůbec bude něco posláno ke klientovi. Jenom přijít na ten regular. Nějak to jít musí, ale asi tady není nikdo kdo to umí.

Když bych to už měl dělat přes javascript - nevím jak to myslíš, že bych měl definovat to pole tagy. Vím, jen, že mám pod daným objektem .options[i] hodnotu "<b>text</b>" mohl bych to vytáhnout pomocí regularu v javascriptu a to zas nevím jak se dělá.
tiso
Profil
Radim24
Uvedom si že na to ideš od lesa - máš formulár, tak ho odošli a spracuj, podľa value niečo doplníš do textu (prvok z poľa) a máš...
Radim24
Profil *
Ted jsem napsal asi něco ne přesně:

Vím, jen, že mám pod daným objektem .options[i] hodnotu "<b>text</b>"

no to vlastně nemám, protože .options[i].value=n (hodnota value je číslo, nikoliv tag)... tak ted nevím, odkud bych měl načíst tu hodnotu "<b>text</b>".

Při generování formuláře zpracovávám asi toto
foreach($pole as $key => $text):
$n++;
$str.="<OPTION ... value=$n>$text</OPTION>";
endforeach;

$text přitom obsahuje zároven i ten tag. Vím, mohl bych ten tag vložit hned za value, ale tím bych překopal už standardizovanou funkci.
Radim24
Profil *
Standardně vygeneruju nefdříve formulář a mám to ve stringu. Když to potřebuji zpracovat nějak jinak než standardně, tak to udělám dodatečně jiným skiptem (to nedělám často, ale toto je právě ta situace).
tiso
Profil
A to je taký problém spraviť si to pole v tvare:
0 => <b></b>
1 => <u><i></i></u>
2 => <i></i>
3 => <u></u>
a získať z neho správnu hodnotu? Doplň si medzery vo vzdelaní, regulárne výrazy sú až za poliami...

btw. máš veľmi zvláštne programovacie praktiky...
Radim24
Profil *
Problém to je právě v tom, že bych kvůli jedné výjmečné situaci musel předělávat funkci, kterou používám na desítky jiných formulářů a tato část kódu by tam zbytečně překážela. No, nic asi nikdo neporadí jak najít ten správný regular. Gdyby někdo dal nějaký odkaz, ještě mrknu na net, jestli tam nenajdu nějaké složitější příklady s regular... uvidíme jestli něco najdu
tiso
Profil
Radim24
Pochop že tú funkciu máš aj tak nah()vn() takto sa proste s formulármi nerobí...
Radim24
Profil *
Radši poraď: hledám nějaké forum, kde by mi s těmi regularnímy výrazi poradili.
tiso
Profil
google...
Radim24
Profil *
Jo, zkouším, jenže mám problém že nevím jak se tam vytváří nové forum, např:
http://www.phpfreaks.com/forums/index.php
tiso
Profil
Materská škôlka je niekde inde...
Radim24
Profil *
Jak se řekne anglicky tvrzení o předchozím nebo o následujícím?
Radim24
Profil *
Já nejsem zvyklý se pohybovat v anglických forech, tak se nediv, že nevim jak vytvořit forum :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.