Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] własna funkcja ReplacePhoto()
Forum PHP.pl > Forum > Przedszkole
bemol
witam, napisałem funkcje ktora zamieni mi znacznik [PHOTO] z zawartością na link ze zdjęciem, a mianowicie:

  1. <?php
  2. function ReplacePhoto( $String ) {
  3. if ( $String != "" ) {
  4. $String = preg_replace('/[PHOTO](d+)[/PHOTO]/','<a href="#" onclick="window.open('../photos/1.jpg'.'','','width=820,height=620,top=5,left=5,scrollbars,resizable');return false;"><img src="../photos/thumbs/1.jpg" class="a_img"></a>',$String);
  5. }
  6. return $String;
  7. }
  8. ?>


i cześć pliku w którym ją wywołuję:
  1. <?php
  2. case 'EditInDatebase': {
  3. $Db = new Engine(HOST, USER, DBPASSWORD, NAME);
  4. if ( $Db->IsConnected ) {
  5. ReplacePhoto($_POST['StartpageContent']);
  6. $Db->Query("UPDATE Startpage SET StartpageContent='".addslashes($_POST['StartpageContent'])."', StartpageDate=Now() WHERE StartpageID='".$_POST['StartpageID']."'");
  7. }
  8. $Db->Close();
  9.  
  10. Direction('Startpage.php');
  11. break;
  12. }
  13. ?>


Dlaczego nie działa? Zwraca wartość $_POST['StarpageContent'] taką jaka została wpisana w formularzu.
Cezar708
chyba regex powinien w tym przyadku być mniej więcej taki co?

Kod
'/[PHOTO](.+?)[/PHOTO]/'


bo porzedni pasuje tylko mniej więcej do czegoś takiego
Kod
[PHOTO]dddddddddddddddddd[/PHOTO]


no.. chyba, że o to Ci właśnie chodzi smile.gif

Pozdrawiam
nospor
ja pozwole sobie jeszcze zwrocic uwagę ze [ oraz ] są znakami specjalnymi i nie mozna ich ot tak sobie uzywac jako czesci slowa. czzby ktos zapomniał o \ winksmiley.jpg
Cezar708
albo inna możliwość:

  1. <?php
  2. $String = preg_replace('/[PHOTO](d+)[/PHOTO]/','<a href="#" onclick="window.open('../photos/$1.jpg'.'','','width=820,height=620,top=5,left=5,scrollbars,resizable');return false;"><img src="../photos/thumbs/$1.jpg" class="a_img"></a>',$String);
  3. ?>


działa?
nospor
kolejna sprawa:
nie: ReplacePhoto($_POST['StartpageContent']);
a: $_POST['StartpageContent'] = ReplacePhoto($_POST['StartpageContent']);

edit up:
poraz kolejny przypominam o \[ oraz \]
bemol
\d w wyrażeniach regularnych to cyfra, więc wyrażenie (\d+) to ciąg cyfr.
Cezar708
Cytat(nospor @ 22.05.2008, 13:34:14 ) *
ja pozwole sobie jeszcze zwrocic uwagę ze [ oraz ] są znakami specjalnymi i nie mozna ich ot tak sobie uzywac jako czesci slowa. czzby ktos zapomniał o \ winksmiley.jpg



he he faktycznie winksmiley.jpg

poprawiam:
  1. <?php
  2. $String = preg_replace('/[PHOTO](d+)[/PHOTO]/','<a href="#" onclick="window.open('../photos/$1.jpg'.'','','width=820,height=620,top=5,left=5,scrollbars,resizable');return false;"><img src="../photos/thumbs/$1.jpg" class="a_img"></a>',$String);
  3. ?>
nospor
Cytat
\d w wyrażeniach regularnych to cyfra, więc wyrażenie (\d+) to ciąg cyfr.
tak, tylko ze ty dales "d" bez "\".
czyzby ineteresowal cie ciag dddddddddddddddd.... ?

edit up: cos ci sie kiepsko poprawilo winksmiley.jpg uzyj bbcode [code] zamiast [php]
Cezar708
Cytat(bemol @ 22.05.2008, 13:35:43 ) *
\d w wyrażeniach regularnych to cyfra, więc wyrażenie (\d+) to ciąg cyfr.


tak, właśnie zauważyłem, że tu się na tym forum to trochę źle parsuje i że trzeba edytować aby było dobrze... winksmiley.jpg

Cytat(nospor @ 22.05.2008, 13:37:38 ) *
tak, tylko ze ty dales "d" bez "\".
czyzby ineteresowal cie ciag dddddddddddddddd.... ?


nie nospor to jak dodajesz posta to ucina tutejszy skrypt forum, u mnie tak samo było smile.gif w poście napisałem \d a wyświetliło się po wszystkim d winksmiley.jpg chyba potrzebna jakaś mała poprawka winksmiley.jpg
nospor
dlatego mowie: [code] zamiast [php] smile.gif pozatym bemol skoro od razu dal \d to mogl przejrzec posta po napisaniu i poprawic od razu

I pamietajcie o tym:
nie: ReplacePhoto($_POST['StartpageContent']);
a: $_POST['StartpageContent'] = ReplacePhoto($_POST['StartpageContent']);
bemol
zrobiłem tak jak napisałeś nospor.

więc wsadze w code

Kod
    function ReplacePhoto( $String ) {
  if ( $String != "" ) {
  $String = preg_replace('/\[PHOTO\](\d+)\[\/PHOTO\]/','<a href="#" onclick="window.open(\'../photos/\1.jpg'.'\',\'\',\'width=820,height=620,top=5,left=5,scrollbars,resizable\');return false;"><img src="../photos/thumbs/\1.jpg" class="a_img"></a>',$String);
  }
  return $String;
  }


Kod
case 'AddToDatebase': {
                    $Db = new Engine(HOST, USER, DBPASSWORD, NAME);
                    if ( $Db->IsConnected ) {
                    ReplacePhoto($_POST['StartpageContent']);
                        $Db->Query("INSERT INTO Startpage ( StartpageID,StartpageContent,StartpageDate ) VALUES ( '','".addslashes($StartpageContent)."',Now() );");
                    }
                    $Db->Close();
                    Direction('Startpage.php');
                    break;
                }


działa smile.gif dziękuje Panowie smile.gif

nospor, skopiowałem co nie trzeba ;p ale działa smile.gif
nospor
Cytat
zrobiłem tak jak napisałeś nospor.
i co teraz, bic? Mowisz ze napisales jak mowilem a dalej w kodzie widze:
ReplacePhoto($_POST['StartpageContent']);

edit up: no, masz szczescie winksmiley.jpg
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.