Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] "&"-y w środku kodu - jak się tego pozbyć?
Forum PHP.pl > Forum > Przedszkole
bordovy
Witam.
Ostatnio napotkałem błąd na swojej stronie, a związany jest niby z prostą rzeczą, ale próbując strstr nie mogę się pozbyć "&"-ów.

O co chodzi?
Moja zmienna wygląda tak:
  1. $audio_kod = mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&


Po tej zmiennej w wyniku połączenia z kodem otrzymuję:
  1. mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&width=70&height=20


Celem jest pozbycie się "&"-ów ze zmiennej, a dokładniej rzecz biorąc wywalić wszystko między .mp3 a width, aby wyglądało to następująco:
  1. $audio_kod = mp3=http://jakas_stronka.com/55064.mp3


Z góry bardzo dziękuję za wszelkie odpowiedzi
bordovy
Szczerze mówiąc nie sprawdziłem do końca, lecz raczej nie o takie coś chodzi. Mój kod jest już :posklejany" z głównego źródła i nie zawsze istnieje to, co między .mp3 a width. Czasem jest tak, że taki amp jest tylko jeden (np: &e=145) a czasem jest ich kilka, kilkanaście - to są śmieci, których chcę się pozbyć.

Myślałem po prostu, że jest jakaś funkcja, która "wytnie" wszystko to, co znajduje się między .mp3 a width sad.gif No cóż ... jeśli nie będzie innego rozwiązania, to pomęczę się z tym... Ale tymczasem dziękuję.
com
a zajrzałeś do tego wgl? parsuje url i on wyciagasz Ci odpowiednie informacje a resztę olewasz

ew regexp sobie napisz wink.gif
KsaR
Uwaga. Poniższy post zawiera gotowca ponieważ szybciej było go napisać niż opisać,
Tak w skrórcie to musisz z funkcji strstr skorzystać.
W razie problemów przeczytaj dalej post.
.
.
.
.
.
.
.
.
.
.
.
.
  1. $audio_kod = strstr('mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&width=70&height=20', '.mp3', true).'.mp3';
  2. echo $audio_kod;


Tutaj wynik działania:
https://eval.in/544512
Od PHP 5.3+ można go używać.
bordovy
KsaR - u mnie na localu działa, oczywiście... ale na serwerze mam (jeszcze) 5.2...

Tak, jak pisałem wczesniej... - myślałem, że muszę zrobić mniej więcej coś takiego:

jeśli w zmiennej $video_kod ISTNIEJE_COŚ_MIĘDZY .mp3 a width to WYRZUĆ_TO
czyli
if($video_kod=NIE WIEM CO) {strstr itd;}

ten if'ek miałby za zadanie sprawdzić najpierw, czy takie śmieci istnieją - jeśli tak to strstr, a jak nie to niech sobie leci dalej z kodem (który już mam)


com - tak, zajrzałem tylko nie zrobiłem tego - szczerze mówiąc, jak zobaczyłem, że znowu będę musiał rozwalać kod na części, żeby go znów posklejać, to pomyślałem, że powinno być coś, co będzie łatwiejsze i... zrezygnowałem sad.gif
Johnas
Spróbuj tak:

  1. $audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&";
  2.  
  3. str_replace("&","&",$audio_kod);
  4.  
  5. echo $audio_kod;
bordovy
GodOfPeople - Rozumiem zamysł, ale ...

taka zmienna:
  1. $audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&";

może za moment być taką:
  1. $audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&&e=77665544&";

albo nawet taką:
  1. $audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309";


Może być też tak:
  1. $audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&fr=86077145&lqg=rntt7a&";

i setki milionów innych kombinacji.


Więc jeśli chodzi o te "śmieci" - to "czysty kod" (bez tych smieci) powinien wyglądać tak:
  1. mp3=http://jakas_stronka.com/55064.mp3?width=70&height=20


"Śmieci" (o różnych parametrach i o różnej ich ilości) może być nawet kilkanaście, kilkadziesiąt lub wcale. Tu jest własnie problem, by najkrótszym mozliwym sposobem "pozbyć się" tych smieci...

Właśnie kombinuję z var_dump'em... coś "chce być" ... ale zajmie mi to "chwilę" wink.gif
Johnas
Co nie zmienia faktu że taka zmienna:
Kod
$audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&&e=77665544&";

prawidłowo powinna być zmieniona na

Kod
$audio_kod = "mp3=http://jakas_stronka.com/55064.mp3?st=309&&e=77665544&";


bo skoro rozumiesz mój zamysł to wiesz dlaczego masz &, również nic nie stoi na przeszkodzie aby && zamienić na & odpowiednim warunkiem, bo jeżeli nie możesz zmienić wersji PHP to musisz szukać innego rozwiązania które pozwoli Ci osiągnąć cel. Nauczyłem się tego, kiedy na moim serwerze nie można było uruchomić socketów, więc musiałem uruchomić je na serwerze VPS, ale również serwer nie zezwolił mi na połączenie jego bezpośrednio z bazą danych na pierwszym serwerze, więc musiałem napisać do tego API... Cel uświęca środki, pamiętaj o tym.
Star
a nie mozesz przepuscic przez htmlspecialchars_decode?

http://ideone.com/T5G94j
com
Ty chcesz wyrzucić te parametry w końcu czy nie? bo amp; jest bardziej poprawne niż &, kolejni znawcy sie znależli..
bordovy
Takie cuś (1):
  1. mp3=http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&width=70&height=20

chcę zamienić na takie cuś (2):
  1. mp3=http://jakas_stronka.com/55064.mp3?width=70&height=20

Nie wiem, jak to prościej napisać: tam, gdzie kończy się .mp3 zaczynają się śmieci. Śmieci te są aż do width...
Więc:

mp3=http://jakas_stronka.com/55064.mp3TO_CHCĘ_WYRZUCIĆ&width=70&height=20
żeby zostało:
mp3=http://jakas_stronka.com/55064.mp3&width=70&height=20
[/html]

sad.gif
innego pomysłu na wytłumaczenie nie mam sad.gif
Johnas
coś takiego dla Ciebie wymyśliłem:

  1. <?php
  2.  
  3. $link = "http://jakas_stronka.com/55064.mp3?st=309&e=145&e=82388&e=8982285&e=0145&width=70&height=20";
  4. $link = str_replace("&", "$", $link);
  5. $url = "http://sophie.net4um.net/API/change_link.php?url=".$link;
  6.  
  7. $show = fopen("$url", 'r');
  8. $result = fread($show,1000);
  9. fclose($show);
  10. echo $result;
  11. ?>


Jak to działa po stronie pliku który to przerabia:
  1. $link = filtr($_GET["link"]);
  2. $link = test_input($link);
  3.  
  4. $link = str_replace("$","&",$link); // zamiana $ na & - w celu uzyskania poprawnego linku
  5. // To co chcesz uzyskać zaczyna się tutaj. ale jak nie masz takiej możliwości to skorzystaj z kodu powyżej...
  6. $query_str = parse_url($link, PHP_URL_QUERY);
  7. parse_str($query_str, $query_params);
  8.  
  9. $link_edit = "mp3=http://jakas_stronka.com/55064.mp3?width=".$query_params["width"]."&height=".$query_params["height"];
  10. echo $link_edit;
  11.  
  12. ?>


PS.
Tak, nudziło mi się trochę o 4 nad ranem tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.