Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> schemat stringa
rzseattle
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Mam problem ze stworzeniem schematu stringa i pozyskiwaniem dzieki niemu odpowiednich zmienych.

Na samym wstepie spotkalem sie z problemem przy funkcji sscanf. Przy kodzie:

[php:1:a4eed5a715]<?php
$schema = "index.php?/{module}/{action}";
$link = "index.php?/admin/show_actions";

$translate = array(
"{module}" => "%2$s",
"{action}" => "%1$s",
);

$schema = strtr( $schema, $translate);

$n = sscanf($link, $schema);
ksort($n);
print_r($n);
?>[/php:1:a4eed5a715]

zwraca ona:
Kod
Array

(

    [0] =>

    [1] =>

    [4] => admin/show_actions

)


a wiec nie traktuje ona '/' jako przerwy i przyporzadkowywuje nastepna zmienna do pierwszej. W manualu znalazlem cos takiego
Cytat
An optional padding specifier that says what character will be used for padding the results to the right string size. This may be a space character or a 0 (zero character). The default is to pad with spaces. An alternate padding character can be specified by prefixing it with a single quote ('). See the examples below.

Problem w tym ze przykladow nie ma a uzycie ' jako prefiksu przed slashem nie pomaga.

Drugi problem jaki sie pojawi to to ze link moze miec zmienna liczbe parametrow i nie za bardzo sobie wyobrazam (jeszcze?) jak pozniej zapetlic reszte parametrow aby schemat
Kod
$schema = "index.php?/{module}/{action}/{paramName}/{paramValue}";
dzialal rowniez w przypadku
Kod
"index.php?/admin/show_actions/param1/value1/param2/value2"



Ogolnie mowiac nie uperam sie przy tym sposobie. Jesli ktos ma lepszy to bede wdzieczny za udzielenie wskazowek, jesli jedak nie to moze ktos sie przyjzy powyzszemu kodowi.

Z gory dziekuje.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rzseattle
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Cytat
nie zadziałaja..
wlasnie nie zadziala :/ (zobacz pierwszy post (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) , ale juz sobie z tym poradzilem wprowadzajac %[^/] . Jednak pojawil sie eszcze jeden problem. Wykorzystujac %1/$[^/] powoduje ze znalezony element jest dodawany na poczatek tablicy potem umieszczam jeszcze drugi ale nastepne elementy chcialbym juz dodawac jak na stos jeden za drugim - niestety narazie jest to niemozliwe
Cytat
cannot mix "%" and "%n$" conversion specifiers
.
Moze jak nad tym jeszcze posiedze to sie uda jakos to obejsc.

Czy naprawde nikt nie zna prostszego sposobu?

Update:
%1/$[^/] - jest o dupe rozczasc - niby dziala, jak kombinujesz z parametrem to zmienia sie pozycja znalezonego stringa w zwroconej tablicy, ale jak przesuniesz wyrazenie w stringu to tez zmienia pozycje w tablicy grrrr....
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 09:56