& zamiast & ?

0

Witam
Czy to prawda ze teraz zaleca uzywac sie w php, itp "&" zamiast & ? np co=news&kat=1 ?

0

Ymm. Jak dobrze pamiętam , jak i w javascript i php uzywało się tylko &, ponieważ nie łapało & (kiedyś coś robiłem, i musiałem zamienic & na & , poniewaz nie dochodzily dane metoda get) . W xhtmlu jest to wymagane - według tidyhtml

0

czyli & tylko w xhtml ?

0

W końcu znak & służy do zapisywania encji, zatem żeby się pojawił sam & musi być jakoś oznaczony.

0

to jak wkoncu? & takze w php? czy tylko xhtml?

0

& i nie mówcie, że gdzieśtam nie działało - trzeba było raczej poprawnie skonfigurować środowisko pracy. Skoro w "zwykłym" HTML używasz non-breaking space ( ) to, żeby wyświetlić znaczek & również należy trzymać się przyjętej konwencji i wpisać &
Może Ci się przydać tablica znaków specjalnych.

ps. w php też będzie działało, bo byłoby nieroztropnie używać na stronie & w linkach (GET), które następnie nie chciałyby być poprawnie przetworzone po stronie serwera.

0

Ja trzymam się manuala:
Np:
http://us3.php.net/parse_str

Wklep :

<?php
$str = "first=value&amp;arr[]=foo+bar&amp;arr[]=baz";
parse_str($str, $output);
print_r($output);
?>

A wyjdzie ci:

Array ( [first] => value [amp;arr] => Array ( [0] => foo bar [1] => baz ) )  //skąd sie pojawiło $output['amp;arr'] ??? . Musiałbyś najpierw $str dac przez funkcje html_entity_decode

& to znak specjalny w HTML!
A po 2 to w PHP w zmiennej np $_SERVER['QUERY_STRING'] nie dostajesz & lecz &
Nie warto używać & ponieważ więcej pracy, ale nikt ci tego nie zakazuje.

0

Sprawą przeglądarki jest to, aby pozamieniać encje (szczególnie &) na odpowiadające im znaki PRZED wysłaniem żądania. Wtedy mimo że na stronie masz & to w linku masz ładnie &, a to ten link jest obrabiany przez serwer http.

Nie warto używać & ponieważ więcej pracy, ale nikt ci tego nie zakazuje.

Więcej pracy? Pisanie w widoku w linkach & zamiast & ? Przecież to raptem dodatkowe 4 znaki.

0
bordeux napisał(a)

Ja trzymam się manuala:
Np:
http://us3.php.net/parse_str

Co ma opis funkcji parse_str do ampersandów? W PHP znak "&" używamy do operacji logicznych i referencji, a w HTML do budowania encji. Zgodnie z tym co napisał nav, to przeglądarka odpowiedzialna jest za odkodowanie danych, więc nie wiem skąd Ci się nagle wzięło

$str = "first=value&amp;arr[]=foo+bar&amp;arr[]=baz";

w PHP w zmiennej np $_SERVER['QUERY_STRING'] nie dostajesz & lecz &

Więc $_SERVER['QUERY_STRING'] da
$str = "first=value&arr[]=foo+bar&arr[]=baz";

I nie będzie żadnego problemu.

Nie warto używać &

Możesz również zrezygnować z encji > i < na rzecz znaków "<" i ">", ale kod napisany w taki sposób nie będzie ani czytelny, ani poprawny.

0

Już wybiegamy za TEMAT! JEMU CHODZI CZY WARTO UŻYWAĆ & w PHP!
Zróbcie test!

$homepage = file_get_contents('http://twojserwer/test.php?taa=12asd&amp;tsaa=12s');
echo $homepage;

a do pliku test.php wklepcie:

print_r($_GET);

Wyjdzie wam - Array ( [taa] => 12asd [amp;tsaa] => 12s )

Co ma opis funkcji parse_str do ampersandów?

Napisałem np. (naprzykład) do funcji parse_str, gdyż ona nie nie interpretuje & jako & . Skąd tam się akurat wzięło to & to nie moja sprawa. Miałem udowodnić że & to coś innego w php niż samo &

Czyli ogólnie mowiac. Jak chcesz pobierać treść strony za pomocą PHP (tak jak powyzej) to nie używaj & . & po prostu uzywa sie w html (treści uzyskanej przez m.in. php) np. w linkach

0

No, to jest specyficzny przypadek, żeby & nie używać. & używa się w HTML. Oraz XML, co za tym idzie także XHTML. Koniec.

A że PHP akurat w przypadku fopen() tego nie interpretuje (tj. nie zamienia z encji na właściwy znak) to jest tylko i wyłącznie wina PHP - nawet nie wiem czy tego jako bug nie zgłosić tak w gruncie rzeczy.

0
Ktos napisał(a)

A że PHP akurat w przypadku fopen() tego nie interpretuje (tj. nie zamienia z encji na właściwy znak) to jest tylko i wyłącznie wina PHP - nawet nie wiem czy tego jako bug nie zgłosić tak w gruncie rzeczy.

nie, poniewaz interpretacja encji jest sprawa przegladarki i standardow *html, a nie php. Nie ma tu specjalnej sprzeczności. tak samo byłoby w c pascalu czy javie, dostajemy linka ze strony z '&', ale wyslac zapytanie trzeba z '&', zamienić & na & nalezy samemu, roznież z takiej przyczyny:

> mkdir http: ; 
> touch 'http://bbb.php&cos=ble'
> ls -l 'http://bbb.php&cos=ble'
-rw-r--r--  1 flabra users 0 2009-03-16 11:59 http://bbb.php&cos=ble

1 użytkowników online, w tym zalogowanych: 0, gości: 1