Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Automatyczny link w php
Forum PHP.pl > Forum > Przedszkole
Kaiba Ziom
Witam.
Robie stronę która ma bardzo dużo działów oraz w działy są zbudowane bardzo szeroko smile.gif.
Chodzi mi o to że mam w indexie includowany każdy dział za pomocą ?cos=cos .
Czy jakoś tak smile.gif.

Jak mogę zrobić tak że jak napisze na stronie Magia to automatycznie robi się link do magia.php .
Chcę tak zrobić ponieważ mam pare słów które bardzo często się wykorzystuje i to by było najlepszym rozwiązaniem.

Rkingsmiley.png Pozdro

----------------------
Przenoszę na Przedszkole
---
~strife
JaRoPHP
Na stronie robisz formularz (przesyłany metodą GET), z polem np. strona, w którym to wpisuje się owe "magia" (strone do załadowania).

Następnie na stronie do której prowadzi formularz:
- sprawdzasz, czy plik o nazwie wpisanej przez użytkownika istnieje w Twoim katalogu (albo robisz tablicę z dopuszczalnymi nazwami i sprawdzasz, czy taka nazwa jest w tej tablicy),
- jak test wypadł pomyślnie, ładujesz ten plik (include($_GET['strona'] . 'php')).
Kaiba Ziom
Proszę o coś konkretniejszego smile.gif.

//Thx za odblokowanie tematu guitar.gif .
em1X
Mianowicie co konkretniejszego, konkretniej juz sie nie da.
Wpisujesz linki w postaci:

  1. index.php?page=Download


natomiast w pliku index.php powinienes robic cos w stylu:

  1. <?php
  2. include("./" . $_GET['page'] . ".php");
  3. ?>


Ale jest to kiepski pomysł, podatny na ataki, więc proponuję poczytać kilka artykułów na temat systemów zarządzania treścią.
Kaiba Ziom
Eh...
Mi chodzi o coś takiego że mam bardzo dużo działów .
I w każdym z działów jest wiele linków naprzykład do potworów czy rzeczy.
Chodzi mi o to że jak zrobie dział osobny z potworem to trzeba znowu łazić po wszystkich działach i przerabiać na linki :S.
Za dużo roboty.
Dlatego chciałbym w php zrobić coś takiego że Jak napisze gdzie kolwiek naprzykład "Magia" to przerabia mi się to na link
  1. <A href="./includes/magia.php">Magia</a>


Proszę o kod . Ponieważ moje PHP jest bardzo słabe sad.gif .
blink.gif Pozdro
bne
Tworzysz plik menu.php i tam dajesz linki, potem w każdym pliku dajesz include('menu.php'); i teraz jak zmienisz linki w menu.php to zmienią sie na każdej podstronie...Najlepiej trzymać zaincludowane wszystko poza zmienną treścią strony
Kaiba Ziom
Tak mam tylko nie o to chodzi.

Chodzi mi o to że w głównej części strony tam gdzie mam niusy, pokazują się statystyki itp. mam tabelke:
A w niej mam :
Nazwa --- Obrazek --- Opis

Chodzi mi o to że jak napisze nazwa itp i zrobie potem ten dział to muszę chodzić znowu po każdym dziale i to robić od nowa...
bne
Za nic cię nie rozumiem, możesz to jakoś dokładniej wyjaśnić winksmiley.jpg ?
athabus
Z tego co ja rozumie to tobie chodzi o coś takiego jak jest w wiki, że dane słowa stają się automatycznie linkami. W tym celu musisz przyjąć jakieś zasady formatowania i nazewnictwa a potem już "tylko" wyrażenia regularne. Ogólnie jednak sprawa do prostych nie należy i trzeba o tym pomyśleć już na fazie wstępnej projektu jak chcesz ten cel osiągnąć.

Ale moze jednak chodzi ci o cośzupełnie innego bo po opisie się na prawdę trudno zorientować.
Kaiba Ziom
Hehe . Tak myślałem że tak będzie biggrin.gif.
Mam bardzo złożoną stronę www.
Jest w niej naprzykład dział :
  1. Miecze

Gdy tam wchodzimy jest opisany każdy miecz w tabelce mniej więcej tak:

Kod
Nazwa[link do miecza w nazwie] , obrazek , opis


Chodzi mi o to że jest naprzykład 100 mieczy w tym dziale , a do każdego musi być odnośnik.
Naprzykład miecz nazywa się: Machete.
Gdy klikniemy na to wchodzimy do machete.php gdzie widzimy:

Nazwa , obrazek , opis , gdzie kupić itp.

Mam jeszcze pare działów naprzykład potwory gdzie jest tak:

Nazwa potwora , opis , gdzie go można znaleźć , co z niego wypada i w nim naprzykład Machete.

I chodzi mi o to że jak jest w każdym dziale po 100 przykładów to chodzić po nich i przemieniać wszystko jest bez sensu dlatego chce zrobić coś takiego :

Pisze normalnie Machete i na stronie przemienia mi się to w <a href="machete.php>Machete</a>

Zrozumiałeś ? blink.gif
bne
Przyjmując, że nazwe miecza masz w zmiennej $miecz wystarczy dodać w pętli <a href="'.$miecz.'.php">'.$miecz.'</a>
Kaiba Ziom
  1. <?
  2. $tekst = 'Magia';
  3. $wynik = str_replace("Magia", "<A href='magia.php'>Magia</A>", $tekst);
  4. echo $wynik;
  5. ?>


Mam taki kod.

$wynik to Magia i faktycznie jak dam $wynik to jest linkiem ale jak dam pod kodem napis:

magia

to nie ma linku sad.gif
Jak zrobić aby był?
bne
O ile dobrze zrozumiałem to chcesz aby każde słowo "magia" zamieniało się na link do magia.php ?

Jeśli tak to cały tekst trzymaj w zmiennej $tekst
x3m
Cytat
ale jak dam pod kodem napis:

magia

to nie ma linku


Bo pewnie nie pobierasz tego tekstu do funkcji.
Kaiba Ziom
Więc mam tak:

<div id="news">


Zawartosc

</div>

Jak to dac w $tekst? ; P
bne
To już się kwalifikuje pod przedszkole...

  1. <?php
  2. $tekst = '<div id="news">
  3. Zawartosc
  4. </div>';
  5. ?>
Kaiba Ziom
tongue.gif
  1. <?
  2. $tekst = 'Magia';
  3. $wynik = str_replace("Magia", "<A href='magia.php'>Magia</A>", $tekst);
  4. echo $wynik;
  5.  
  6. $tekst = '<div id="news">
  7. Magia to swiat Magii
  8. </div>';
  9. ?>


nie wyswietla mi tej czesci co dales
Łukasz O.
zaraz się tępą brzytwą potnę...
  1. <?
  2. $tekst = '<div id="news">Magia to swiat Magii</div>';
  3. $wynik = str_replace('Magia', '<A href="magia.php">Magia</A>', $tekst);
  4. echo $wynik;
  5. ?>
Kaiba Ziom
Nikt mnie nie rozumie?

  1. <?
  2. $tekst = 'Magia';
  3. $wynik = str_replace("Magia", "<A href='magia.php'>Magia</A>", $tekst);
  4. echo '<div id="news>';
  5. echo $wynik = 'zawartość niusów na stronie w których używam słowa Magia';
  6. echo '</div>';
  7. ?>


Chcę aby to Magia było linkiem , a teraz nie jest ;/
bne
To ty nikogo nie rozumiesz, tak się nie da, najpierw wpisujesz tekst do zmiennej a potem parsujesz go przez wyrażenie regularne ... Nie na odwrót !
Kaiba Ziom
No to jak to zrobić ? -.-
JaRoPHP
Cytat(Kaiba Ziom @ 17.03.2007, 19:13:35 ) *
No to jak to zrobić ? -.-
Tak jak napisał @bne: "najpierw wpisujesz tekst do zmiennej a potem parsujesz go przez wyrażenie regularne":
  1. <?php
  2. $tekst = 'zawartość niusów na stronie w których używam słowa Magia';
  3. $wynik = str_replace("Magia", "<a href='magia.php'>Magia</a>", $tekst);
  4. echo '<div id="news>';
  5. echo $wynik;
  6. echo '</div>';
  7. ?>
Kaiba Ziom
blinksmiley.gif Faktycznie .
Wszystkich przepraszam snitch.gif .

Mam jeszcze dwa pytanka:
  1. <?php
  2. $tekst = 'Pamiętasz swiat blablabla Magia to Magia blablabla Magia';
  3. $wynik = str_replace("Magia", "<a href='magia.php'>Magia</a>", $tekst);
  4. echo '<div id="news">';
  5. echo $wynik;
  6. echo '</div>';
  7. ?>


Jak w $tekst dać ten kod:
  1. <?
  2. $body = $_GET["body"];
  3.  
  4.  
  5.  
  6. if ($body=="")
  7.  {
  8.  include("includes/main.php");
  9.  }
  10.  
  11. else {
  12.  
  13. if (is_file("includes/$body.php"))
  14. {
  15. include("includes/$body.php");
  16. }
  17.  
  18. else
  19. {
  20. include("includes/error.php");
  21. }
  22. }
  23.  
  24.  
  25. ?>


A drugie smile.gif .
Jak zrobić :

  1. <?php
  2. $wynik = str_replace("Magia", "<a href='magia.php'>Magia</a>", $tekst);
  3. ?>

Chcę zrobić dwa takie jedno Magia a drugie Czarodziej.

Proszę o pomoc smile.gif.
bne
Co do pierwszego to nie zmieniaj nic, tylko w drugim zamień $tekst na $body...

  1. <?php
  2. $wynik = str_replace("Magia", "<a href='magia.php'>Magia</a>", $body);
  3. $wynik = str_replace("Czarodziej", "<a href='czarodziej.php'>Czarodziej</a>", $body);
  4. ?>
Kaiba Ziom
test.php:
  1. <?php
  2. $body = $_GET["body"];
  3.  
  4. if ($body=="")
  5.  {
  6.  include("main.php");
  7.  }
  8.  
  9. else {
  10.  
  11. if (is_file("$body.php"))
  12. {
  13. include("$body.php");
  14. }
  15.  
  16. else
  17. {
  18. include("error.php");
  19. }
  20. }
  21.  
  22. $wynik = str_replace("Magia", "<a href='magia.php'>Magia</a>", $body);
  23. $wynik = str_replace("Czarodziej", "<a href='czarodziej.php'>Czarodziej</a>", $body);
  24. echo $wynik;
  25. ?>


w main.php mam Magia.
jak wejdę w test.php to Magia nie jest linkiem sad.gif .
Co jest tu źle?
Łukasz O.
jak robisz include i chcesz pozmieniacć coś w includowanym pliku to przepuść to przez ob_*, w innym przypadku ustaw zmienną np. $zawartosc_pliku -> odczytaj zawartość pliku przez file_get_contents i dopiero dawaj na to str_replace

edit:
  1. <?php
  2. $body = $_GET['body'];
  3. if(empty($body)){
  4. include('main.php');
  5. }else{
  6. if(is_file($body.'.php')){
  7. $body=file_get_contents($body.'.php'); //tak ma być
  8. }else{
  9. include('error.php');
  10. }
  11. }
  12. //używaj str_ireplace - nie będziesz musiał uważać na duże i małe litery
  13. $wynik = str_ireplace('magia', '<a href="magia.php">Magia</a>', $body);
  14. $wynik = str_ireplace('czarodziej', '<a href="czarodziej.php">Czarodziej</a>', $wynik); //tu ma być znowu $wynik, bo tu masz pierwszą zmianę w magią :/
  15. echo $wynik;
  16. ?>
Kaiba Ziom
blink.gif Dałem twój kod i weszłem w test.php i to samo sad.gif .
Nie ma linku .
Łukasz O.
a to ciekawe - pewnie masz jakąś inną wersję php tongue.gif

skopiowałem dokładnie to co wkleiłem -> utworzyłem plik magia.php z zawartośią:
  1. jaki� tekst Magia i znowu czarodziej

-> wywołałem lol.php?body=magia i zgadnij co się stało? dostałem coś takiego:
  1. jaki� tekst <a href="magia.php">Magia</a> i znowu <a href="czarodziej.php">Czarodziej</a>
widać mam kosmicznego php'a u siebie

PS. dostajesz gotowca po raz kolejny - więc nie denerwuj proszę, bo nikt Ci więcej nie pomoże (mnie nerwy zaraz biorą) - sprawdź sam co pochrzaniłeś - użyj metody prób i błędów, ustawiaj jakieś break'i, komunikaty - rób cokolwiek żeby się dowiedzieć co jest nie tak -> a nie pod nos i jeszczeżal, "bo nie działa" :/
Kaiba Ziom
blink.gif blink.gif Faktycznie bardzo dziwne blink.gif .
Zrobiłem to samo co Ty ale zrestartowałem komputer i faktycznie wszystko chodzi biggrin.gif .
Dziękujeeeeeeeeeeeeeeeeeeeeeeeee bardzo :].
icetab
a jak zrobic aby wyszukal na stronie link np www lub http:// i zrobil go na normalny <a href="link" >http://</a>

czy ktos wie ?
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.