Autor Zpráva
tomas3333
Profil
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
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
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
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
takto to funguje.... tak neviem co som robil zle
dik
tiso
Profil
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é.

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: