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
)
(
[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.