Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przerobienie tekstu na linki - nieoczekiwany zonk!
Forum PHP.pl > Forum > PHP
Liszek
Witam serdecznie. PRoszę o pomoc w rozwiązaniu problemu za nim sobie wyrwę wszyastkie włosy z głowy.

Otóż wyciągam z bazki tekst, a w tekście występują linki w nawiasach kwadratowych [[ link]]

Wiec napisałem funkcje odpowiednią fukncje która działa.

  1. <?
  2. $opis='In [[Roman Catholic]] theology and [[canon law]], a particular Church is any of 
    the individual constituent ecclesial communities in [[full communion]] with the C
    hurch of Rome. These can be the local Churches mentioned in canon 368 of the Code
     of Canon Law: "Particular Churches, in which and from which the one and only catholic Chur
    ch exists, are principally [[diocese]]s. Unless the contrary is clear, the follow
    ing are equivalent to a diocese: a territorial prelature, a territorial abbacy, a
     [[apostolic vicariate|vicariate apostolic]], a [[apostolic prefecture|prefecture
     apostolic]] and a permanently established apostolic administration"'
    ;
  3.  
  4. $opis=preg_replace( '/[[([^[]*?)|([^[]*?)]]/is', '<a href="1">2</a>', $opis );
  5. $opis=preg_replace('/[[([^[]*?)]]/','<a href="1">1</a>',$opis );
  6. echo $opis;
  7. ?>

Skrytp działa jak trzeba. Problem pojawił się gdy okazało się że w samych powstałych linkach należy zamienić spacje na podreślenia. Wiec umieściłem w kodzie funkcje str_replace:

  1. <?php
  2. $opis=preg_replace('/[[([^[]*?)]]/','<a href="'.str_replace(" ", "_", '1').'">1</a>',$opis );
  3. ?>

Jednak skrypt nic nie podmienia. Nie pokazuje żadnego błędu?? Dlaczego nei mam żadnego pojęcia. Po prostu wyświetla link tak jakby w nim żadnej spacji nei znalazł. i nadal wyświetla spacje

czyli mam: <A href="Roman Catholic">Roman Catholic</A>

a powinno być: <A href="Roman_Catholic">Roman Catholic</A>

Robiłem cuda i poprsotu nei wiem dlaczego nie działająmi operacje wogóle wewnątrz funkcji na zmiennych \1. Nie mogę naprzykład zamienić po drodze wewnątrz funkcji wszystkich znaków na duże.

Proszę o pomoc bo jeszcze czegoś takiego nie miałem. Dodam ze na pewno nie jest to wina serwera ponieważ odpalałęm naewt lokalnie na krasnalu. Możecie sobie wkleić gotową część:

  1. <?
  2. $opis='In [[Roman Catholic]] theology and [[canon law]], a particular Church is any of 
    the individual constituent ecclesial communities in [[full communion]] with the C
    hurch of Rome. These can be the local Churches mentioned in canon 368 of the Code
     of Canon Law: "Particular Churches, in which and from which the one and only catholic Chur
    ch exists, are principally [[diocese]]s. Unless the contrary is clear, the follow
    ing are equivalent to a diocese: a territorial prelature, a territorial abbacy, a
     [[apostolic vicariate|vicariate apostolic]], a [[apostolic prefecture|prefecture
     apostolic]] and a permanently established apostolic administration"'
    ;
  3.  
  4. $opis=preg_replace( '/[[([^[]*?)|([^[]*?)]]/is', '<a href="'.str_replace(" ", "_", '1').'">2</a>', $opis );
  5. $opis=preg_replace('/[[([^[]*?)]]/','<a href="'.str_replace(" ", "_", '1').'">1</a>',$opis );
  6. echo $opis;
  7. ?>

Z góry dzięki za odpowiedź!

---


FiDO: Przeniesione z Algorytmy... na php
FiDO
Poczytaj o uzywaniu modyfikatora/flagi e w funkcji preg_replace" title="Zobacz w manualu php" target="_manual
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.