| 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: 16 let
|
|||
0