Autor | Zpráva | ||
---|---|---|---|
tomas3333 Profil |
#1 · Zasláno: 29. 8. 2009, 17:01:59
Snazil som sa napisat reg. vyraz, ktory by mi z takehoto textu
<shorttext name='abc' value='xyz'> vybral prave name a value hodnoty, pricom value je nepovinny a namiesto ' sa mozu pouzit ". <shorttext +name=(\"|')(?<name>[^\\1]*)\\1(?: +value=(\"|')(?<value>[^\\4]*)\\4)?> tetoval som preg_match() funkciou a stroskotoal som na tom, ze nefungovalo [^\\1] ako som ocakaval. Ide mi vlastne o to, urobit nieco ako sablonu, ktora by obsahovala klasicke html a par tagov by bolo specialnych. Rozmyslal som nad xmlkom a jeho parsovanim, ale neviem ci je to najlepsie riesenie. |
||
tiso Profil |
#2 · Zasláno: 29. 8. 2009, 17:37:54
Takto to funguje:
/<shorttext(?:\s+name=("|')(?<name>[^\1]*)\1)?\s+value=("|')(?<value>[^\3]+?)\3>/ Doplň si spätné lomítka podľa úvodzoviek |
||
tomas3333 Profil |
#3 · Zasláno: 29. 8. 2009, 19:19:41
nefunguje, vrati prazdne pole. navyse som spravil par testov a nejak divne sa mi to asi sprava:
<?php error_reporting(E_ALL); $regular = "/(')\1/"; $text = "''"; preg_match($regular, $text, $matches); print_r($matches); ?> vrati prazdne pole $regular = "/(')\\1/"; zhoda $regular = "/(')a\\1/"; $text = "'a'"; zhoda $regular = "/(')[^\1]\1/"; $text = "'a'"; prazdne pole $regular = "/(')[^\1]+\\1/"; $text = "'a'b'"; a $regular = "/(')[^\\1]+\\1/"; $text = "'a'b'"; vrati 'a'b' |
||
Alphard Profil |
#4 · Zasláno: 29. 8. 2009, 22:29:49
Mělo by to fungovat, zkoušel jsem
<?php $regular = '/<shorttext(?:\s+name=("|\')(?<name>[^\1]*)\1)?\s+value=("|\')(?<value>[^\3]+?)\3>/'; $text = "<shorttext name='abc' value='xyz'>"; preg_match($regular, $text, $matches); print_r($matches); echo "<p style=\"font-weight: bold\">Přímý výpis:<br>"; echo $matches['name']."<br>"; echo $matches['value']."</p>"; A výstup: Array ( [0] => [1] => ' [name] => abc [2] => abc [3] => ' [value] => xyz [4] => xyz ) Přímý výpis: abc xyz |
||
tomas3333 Profil |
#5 · Zasláno: 29. 8. 2009, 22:47:00 · Upravil/a: tomas3333
takto to funguje.... tak neviem co som robil zle
dik |
||
tiso Profil |
#6 · Zasláno: 30. 8. 2009, 01:23:35
tomas3333: už viem kde bol problém - úvodzovky vs. apostrofy. Môj príklad funguje v apostrofoch, ty si používal úvodzovky, preto to nešlo. V nich sa musí escapovať spätné lomítko, sám si prišiel na to, že to funguje zvláštne a niekde sa escapovať nemusí ([^\1] vs. [^\\1]), hoci manuál tvrdí niečo iné.
|
||
Časová prodleva: 15 let
|
0