Autor Zpráva
Georgík
Profil
Dobrý den.

Prosím, pomozte mi získávat z obecného query stringu substring proměnné.

Například ze vstupního query stringu:
"?x007=error&x0=x1=chyba&x1=zde=je=vysledek&x2=osibka"

by výsledek pro proměnnou "x1" měl být:
"zde=je=vysledek", kde rovnítka ve výsledném stringu nemohu vyloučit.

Budu moc vděčný za každé řešení, ale perfektní řešení by mi strašně pomohlo. Zatím zakopávám.

Velice děkuji.

S přátelským pozdravem. Jirka
Cenobit
Profil
Zkus pole $_GET['id'] kde id je nazev promenne. Videl jsem na to i priklad na php.net, ale ted nevim u ktere funkce(
Hugo_jinde
Profil *
Georgík

Pokud ti jde o php, tak jsou vsechny data z URL ulozeny v poli $_GET. Muzes se na to podivat napr. pomoci

print_r($_GET)
Georgík
Profil
Dobrý den.

Děkuji za snahu.

Hugo poznal chybu. Ano v tom to je. Zapoměl jsem říci, že problém potřebuji vyřešit obecně - ze stringové proměnné do jiné. Celý projekt je v .NET Frameworku a visí to jen na tomhle. Mám tam ale k dispozici běžné regulární výrazy jako v JavaScriptu a asi PHP. PHP bohužel neumím a i pro moje použití bych asi potřeboval spíše regex (modifikuji knihovnu).

Prosím, jestli umíte regulární výrazy (třeba pro PHP), pomozte. Já se tím nějak proberu.

Ještě jednou díky. Jirka
Cenobit
Profil
Hi

reg. vyrazy moc neovladam ale tohle by mohlo pomoci.

EregI ("\&=([^\&]) ", $URL, $shoda);

to by melo vybrat vse mezi 2 znaky & a pak to ulozit do pole $shoda.
Takze 1 promenna bude $shoda [1] atd.
Ale ti mreg vyrazem si nejsem fakt jistej.

UPRAVA: Uz jsem to nasel. Tohle by melo vypsat vsechny parametry URL

foreach($_GET as $variable => $value) {
echo "Variable Name: " . $variable . " Value: $value<br>";
Georgík
Profil
Dobrý večer.

Velice děkuji Cenobitovi za příspěvek.

Řešení vypadá zajímavě, jenom asi řeší jen speciální případ query stringu. Problém je v tom, že nastává několik variant. To dílko, na kterém pracuji se musí vypořádat s jakoukoliv situací.

1. "?x007=error&x0=x1=chyba&x1=zde=je=vysledek&x2=osibka" -> zleva, zprava "&"
2. "?x007=error&x0=x1=chyba&x1=zde=je=vysledek" -> zleva "&", zprava nic
3. "?x1=zde=je=vysledek&x2=osibka" -> zleva "?", zprava "&"
4. "?x1=zde=je=vysledek" -> zleva "?", zprava nic

Velice díky. Jirka
Cenobit
Profil
Hi

me se to zda ok, ale nevim jak presne to ches interpretovat.

1. "?x007=error&x0=x1=chyba&x1=zde=je=vysledek&x2=osibka"
Vrati
Variable Name: x007 Value: error
Variable Name: x0 Value: x1=chyba
Variable Name: x1 Value: zde=je=vysledek
Variable Name: x2 Value: osibka

2) Vrati
Variable Name: x007 Value: error
Variable Name: x0 Value: x1=chyba
Variable Name: x1 Value: zde=je=vysledek

3) Vrati
Variable Name: x1 Value: zde=je=vysledek
Variable Name: x2 Value: osibka

4) Vrati
Variable Name: x1 Value: zde=je=vysledek

A atdy je cely script
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<body>
<?
foreach($_GET as $variable => $value) {
echo "Variable Name: " . $variable . " Value: $value<br>";
}
?>


</body>
</html>

BTW: nechci byt drzy, ale myslim si, ze v URL by se specialni zbnaky jako "=" nemely vibec vyskytovat a kdyztak byt zakodovany. Ale nejsem si jisty.
Georgík
Profil
Dobrý večer.

Panu Cenobite děkuji Vám za příspěvek. Navíc jste si dal strašně práce. Mě tady ještě nikdo tolik nepomohl.

Vaše řešení je zajímavé a evidentně si dovedete poradit. Zdá se, že jste příliš skromný. Já jen nevím, jak potom při získávání shod regexu zjistím, která shoda odpovídá tomu mému jménu proměnné, které jednou je x1, jednou x2 atd. a jednou je na začátku query stringu a tím i v pořadí shod a jednou zcela jinde. Jméno proměnné je proměnná.

Na tomto problému s přestávkami pracuji klidně dva měsíce. Také proto jsem již pozapoměl, že to URL prošlo JavaScriptovou funkcí unescape, ale jinak je v daném tvaru.

Mnohokrát děkuji. Jirka
Kajman
Profil *
http://www.google.com/search?hl=en&q=query+string+parsing+javascript
Georgík
Profil
Dobrý večer.

Na úvod bych se rád obmluvil Cenobitovi za citové a jiné výlevy, jsem dlouho bez dovolené a vůbec mimo.

Výsledný regex pro jméno proměnné "x1" má tvar:

(?<=(&|\?|^)x1\=).*?(?=(&|$))

Jde o verzi pro .NET Framework, v JavaScriptu totéž neumím (nepodařilo se mi to). Jedině snad takto:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><script type="text/javascript">

var strVar = prompt("", "?x007=error&x0=x1=chyba&x1=zde=je=vysledek&x2=osibka");
alert(strVar.match(/(&|\?|^)x1\=[\w\/\.\:\-\%\=]*/)[0].match(/x1\=[\w\ /\.\:\-\%\=]*/)[0].match(/[^(x1\=)][\w\/\.\:\-\%\=]*/)[0]);

</script></head><body></body></html>
Nakonec jsem na to tedy přišel, přesto velice děkuji těm, co se snažili.

Hodně úspěchů ve vývoji. Jirka
Toto téma je uzamčeno. Odpověď nelze zaslat.

0