Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z preg_replace
craker
post 25.10.2007, 19:23:22
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


Witam, mam pytanie co w tym kodzie jest źle:

Kod
$nazwa = preg_replace('#(l|L)eica#si', '<a href="http://www.sitesearch.html"><em>leica</em></a>', $nazwa);

ponieważ przy kilku takich wyrażeniach ani nie zamienia tych ciągów na odpowiedniki, a co gorsza, do bazy zapisywany jest pusty ciąg zamiast treści zamienionej


--------------------
narazie brak sygnaturki
Go to the top of the page
+Quote Post
craker
post 25.10.2007, 23:05:41
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


to może mi powiesz czemu mi nie działa takie coś:
Kod
<?

require("includes/configure.php");

require("admin/includes/functions/database.php");


mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD) or die("kupa");
mysql_select_db(DB_DATABASE)  or die("kupa1");

$q = "SELECT products_id, products_description, language_id FROM products_description WHERE language_id=4";

$query_result = mysql_query($q) or die("Zapytanie niepoprawne");


while($row = mysql_fetch_array($query_result))
{

    $id = $row['products_id'];
    $nazwa = tep_db_prepare_input($row['products_description']);

    $nazwa = preg_replace('#(t|T)achimetr(a|ów|y|u|ia)#si', '<a href="www.strona/tfearch.html"><em>\\1achimetr\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)tatyw(a|u|y|ów)#si', '<a href="www.strona/stfarch.html"><em>\\1tatyw\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(l|L)eica#si', '<a href="www.strona/leifrch.html"><em>leica</em></a>', $nazwa);
    $nazwa = preg_replace('#(d|D)ist(o|a)#si', '<a href="www.strona/disfch.html"><em>\\1ist\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(l|L)aser(y|a|u|ów|owa|owe)#si', '<a href="www.strona/lasfch.html"><em>\\1aser\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(r|R)adiotelefon(y|u|ów)#si', '<a href="www.strona/radfarch.html"><em>\\1adiotelefon\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(g|G)eodez(yjne|ja)#si', '<a href="www.strona/geodefarch.html"><em>\\1eodez\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(t|T)rimble#si', '<a href="www.strona/trifrch.html"><em>\\1rimble</em></a>', $nazwa);
    $nazwa = preg_replace('#(p|P)poziomic(a|e)#si', '<a href="www.strona/poziofrch.html"><em>\\1oziomic\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(ł|Ł)at(a|y)#si', '<a href="www.strona/łafarch.html"><em>\\1at\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(w|W)ęgielnic(a|e|y)#si', '<a href="www.strona/węgiefrch.html"><em>\\1ęgielnic\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(w|W)inkalk(a|u)#si', '<a href="www.strona/wifarch.html"><em>\\1inkalk\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(c|C)-geo', '<a href="www.strona/c-frch.html"><em>\\1-geo</em></a>', $nazwa);
    $nazwa = preg_replace('#(t|T)eodolit(a|u|ów|y)#si', '<a href="www.strona/teodofrch.html"><em>\\1eodolit\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)okkia#si', '<a href="www.strona/sfrch.html"><em>\\1okkia</em></a>', $nazwa);
    $nazwa = preg_replace('#(w|W)ykrywacz(e|a|u|ów|y)#si', '<a href="www.strona/wykryfarch.html"><em>\\1ykrywacz\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(l|L)okalizator#si', '<a href="www.strona/lokalizfearch.html"><em>\\1okalizator</em></a>', $nazwa);
    $nazwa = preg_replace('#(d|D)rogomierz(a|u|ów|e|y)#si', '<a href="www.strona/drogofarch.html"><em>\\1rogomierz\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(n|N)edo#si', '<a href="www.strona/nfrch.html"><em>\\1edo</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)oppec#si', '<a href="www.strona/soppfrch.html"><em>\\1oppec</em></a>', $nazwa);
    $nazwa = preg_replace('#(r|R)ichter#si', '<a href="www.strona/richfrch.html"><em>\\1ichter</em></a>', $nazwa);
    $nazwa = preg_replace('#(r|R)adiodetection#si', '<a href="www.strona/radifrch.html"><em>\\1adiodetection</em></a>', $nazwa);
    $nazwa = preg_replace('#(d|D)alekomierz(a|u)e)#si', '<a href="www.strona/dalfarch.html"><em>\\1alekomierz\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)outh#si', '<a href="www.strona/soufrch.html"><em>\\1outh</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)zkicownik(a|u|i|ów)#si', '<a href="www.strona/szkicfarch.html"><em>\\1zkicownik\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(g|G)ps#si', '<a href="www.strona/gf.html"><em>\\1ps</em></a>', $nazwa);
    $nazwa = preg_replace('#(r|R)uletk(a|i)#si', '<a href="www.strona/rufh.html"><em>\\1uletk\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(t|T)aśm(a|y)#si', '<a href="www.strona/tfrch.html"><em>\\1aśm\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(k|K)artografia#si', '<a href="www.strona/kartogfarch.html"><em>\\1artografia</em></a>', $nazwa);
    $nazwa = preg_replace('#(w|W)odowskaz(owa)#si', '<a href="www.strona/wodofrch.html"><em>\\1odowskaz\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(l|L)aserliner#si', '<a href="www.strona/lasefrch.html"><em>\\1aserliner</em></a>', $nazwa);
    $nazwa = preg_replace('#(m|M)iernik(a|ów|i)#si', '<a href="www.strona/mierfch.html"><em>\\1iernik\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(r|R)ektyfikacja#si', '<a href="www.strona/rektfarch.html"><em>\\1ektyfikacja</em></a>', $nazwa);
    $nazwa = preg_replace('#(p|P)rzegląd(y|ów)#si', '<a href="www.strona/przfch.html"><em>\\1rzegląd\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(s|S)erwis#si', '<a href="www.strona/sfarch.html"><em>\\1erwis</em></a>', $nazwa);
    $nazwa = preg_replace('#(b|B)udownictwo#si', '<a href="www.strona/budownfrch.html"><em>\\1udownictwo</em></a>', $nazwa);
    $nazwa = preg_replace('#(d|D)almierz(a|ów|e|y)#si', '<a href="www.strona/dalfrch.html"><em>\\1almierz\\2</em></a>', $nazwa);
    $nazwa = preg_replace('#(n|N)iwelator(a|u|y|ów)#si', '<a href="www.strona/niwfrch.html"><em>\\1iwelator\\2</em></a>', $nazwa);*/

    
    
    $nazwa = preg_replace("#<P><FONT (.*?)><STRONG>(.*?)</STRONG></FONT></P>#si", "<h2 class='prod_h2'>\\2</h2>", $nazwa);
    $nazwa = preg_replace("#<P><FONT (.*?)><b>(.*?)</b></FONT></P>#si", "<h2 class='prod_h2'>\\2</h2>", $nazwa);
    $nazwa = preg_replace("#<P><b><FONT (.*?)>(.*?)</FONT></b></P>#si", "<h2 class='prod_h2'>\\2</h2>", $nazwa);
    $nazwa = preg_replace("#<b>(.*?)</b>#si", "<strong>\\1</strong>", $nazwa);
    
    
    
    
    $tekst = mysql_escape_string($nazwa);
    $q1 = "UPDATE products_description SET `products_description`='$tekst' WHERE products_id=$id";


    
    
    if(mysql_query($q1)) echo $id ."<br />";
    echo mysql_error().'<br/>';
    
}        
?>


nie zamienia słów na odpowiedniki linkowe, i wywala wszystko z opisu w bazie


--------------------
narazie brak sygnaturki
Go to the top of the page
+Quote Post
b_chmura
post 25.10.2007, 23:26:47
Post #3





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


masz trzy literówki

tu
Kod
$nazwa = preg_replace('#(d|D)alekomierz(a|u)e)#si', '<a href="www.strona/dalfarch.html"><em>\\1alekomierz\\2</em></a>', $nazwa);

tu
Kod
$nazwa = preg_replace('#(c|C)-geo', '<a href="www.strona/c-frch.html"><em>\\1-geo</em></a>', $nazwa);

i tu
Kod
$nazwa = preg_replace('#(n|N)iwelator(a|u|y|ów)#si', '<a href="www.strona/niwfrch.html"><em>\\1iwelator\\2</em></a>', $nazwa);*/


a poza tym działa jak należy smile.gif

http://www.informel.pl/~bchmura/ble.php

Ten post edytował b_chmura 25.10.2007, 23:27:13
Go to the top of the page
+Quote Post
craker
post 26.10.2007, 11:45:42
Post #4





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


ok dzięki, działa z jednym wyjątkiem jak, a dokładniej chodzi mi np o:
Kod
$nazwa = preg_replace('#(t|T)achimetr(a|ów|y|u|ia)#si', '<a href="www.strona/tfearch.html"><em>\\1achimetr\\2</em></a>', $nazwa);

zamienia odmiany poprawnie jednak jak zrobić, by zamieniało także (t|T)achimetr, czyli bez końcówek, i drugie pytanie jak ograniczyć aby tylko raz zamieniał tzn mam takie coś że w/w słowo zamienia mi ze standardu, ale jak dojdą mi nowe pozycje to będę chciał powtórzyć działanie skryptu, czyli nie powinien zamieniać powtórnie tych słów. jak zrobić właśnie to by nie zamieniał ponownie bo wtedy się robi straszny bałagan, bo w linku jeśli znajdzie się też to słowo kluczowe to będzie link w linku i objęte jeszcze jednym linkiem


--------------------
narazie brak sygnaturki
Go to the top of the page
+Quote Post
b_chmura
post 26.10.2007, 12:01:59
Post #5





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Cytat
zamienia odmiany poprawnie jednak jak zrobić, by zamieniało także (t|T)achimetr, czyli bez końcówek,

po nawiasie daj znak zapytania

Cytat
jak ograniczyć aby tylko raz zamieniał tzn mam takie coś że w/w słowo zamienia mi ze standardu, ale jak dojdą mi nowe pozycje to będę chciał powtórzyć działanie skryptu, czyli nie powinien zamieniać powtórnie tych słów. jak zrobić właśnie to by nie zamieniał ponownie bo wtedy się robi straszny bałagan, bo w linku jeśli znajdzie się też to słowo kluczowe to będzie link w linku i objęte jeszcze jednym linkiem


proponowałbym raz stosować tą funkcje przy wyświetlaniu. Ewentualnie w wyrażeniu zaznacz ze ciąg znaków nie może sie zaczynać "> i kończyć </a>
Go to the top of the page
+Quote Post
craker
post 29.10.2007, 08:44:42
Post #6





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


za pierwsze dzięki, zapomniałem o znaku zapytania i dawałem + i się dziwiłem że nie było innego efektu

Cytat(b_chmura @ 26.10.2007, 13:01:59 ) *
proponowałbym raz stosować tą funkcje przy wyświetlaniu. Ewentualnie w wyrażeniu zaznacz ze ciąg znaków nie może sie zaczynać "> i kończyć </a>

tzn. możesz troszkę jaśniej questionmark.gif


b_chmura pomórz proszę bo to jest bardzo ważne dla mnie


--------------------
narazie brak sygnaturki
Go to the top of the page
+Quote Post
b_chmura
post 29.10.2007, 14:27:34
Post #7





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


w bazie przetrzymuj zwykły tekst dopiero przy wyświetlaniu formatuj go przed odpowiednią funkcje
W Twoim wypadku:
  1. <?php
  2. function zamien($nazwa)
  3. {
  4. $nazwa = preg_replace('#(t|T)achimetr(a|ów|y|u|ia)#si', '<a href="www.strona/tfearch.html"><em>1achimetr2</em></a>', $nazwa);
  5. $nazwa = preg_replace('#(s|S)tatyw(a|u|y|ów)#si', '<a href="www.strona/stfarch.html"><em>1tatyw2</em></a>', $nazwa);
  6. $nazwa = preg_replace('#(l|L)eica#si', '<a href="www.strona/leifrch.html"><em>leica</em></a>', $nazwa);
  7. $nazwa = preg_replace('#(d|D)ist(o|a)#si', '<a href="www.strona/disfch.html"><em>1ist2</em></a>', $nazwa);
  8. $nazwa = preg_replace('#(l|L)aser(y|a|u|ów|owa|owe)#si', '<a href="www.strona/lasfch.html"><em>1aser2</em></a>', $nazwa);
  9. $nazwa = preg_replace('#(r|R)adiotelefon(y|u|ów)#si', '<a href="www.strona/radfarch.html"><em>1adiotelefon2</em></a>', $nazwa);
  10. $nazwa = preg_replace('#(g|G)eodez(yjne|ja)#si', '<a href="www.strona/geodefarch.html"><em>1eodez2</em></a>', $nazwa);
  11. $nazwa = preg_replace('#(t|T)rimble#si', '<a href="www.strona/trifrch.html"><em>1rimble</em></a>', $nazwa);
  12. $nazwa = preg_replace('#(p|P)poziomic(a|e)#si', '<a href="www.strona/poziofrch.html"><em>1oziomic2</em></a>', $nazwa);
  13. $nazwa = preg_replace('#(ł|Ł)at(a|y)#si', '<a href="www.strona/łafarch.html"><em>1at2</em></a>', $nazwa);
  14. $nazwa = preg_replace('#(w|W)ęgielnic(a|e|y)#si', '<a href="www.strona/węgiefrch.html"><em>1ęgielnic2</em></a>', $nazwa);
  15. $nazwa = preg_replace('#(w|W)inkalk(a|u)#si', '<a href="www.strona/wifarch.html"><em>1inkalk2</em></a>', $nazwa);
  16. $nazwa = preg_replace('#(c|C)-geo', '<a href="www.strona/c-frch.html"><em>1-geo</em></a>', $nazwa);
  17. $nazwa = preg_replace('#(t|T)eodolit(a|u|ów|y)#si', '<a href="www.strona/teodofrch.html"><em>1eodolit2</em></a>', $nazwa);
  18. $nazwa = preg_replace('#(s|S)okkia#si', '<a href="www.strona/sfrch.html"><em>1okkia</em></a>', $nazwa);
  19. $nazwa = preg_replace('#(w|W)ykrywacz(e|a|u|ów|y)#si', '<a href="www.strona/wykryfarch.html"><em>1ykrywacz2</em></a>', $nazwa);
  20. $nazwa = preg_replace('#(l|L)okalizator#si', '<a href="www.strona/lokalizfearch.html"><em>1okalizator</em></a>', $nazwa);
  21. $nazwa = preg_replace('#(d|D)rogomierz(a|u|ów|e|y)#si', '<a href="www.strona/drogofarch.html"><em>1rogomierz2</em></a>', $nazwa);
  22. $nazwa = preg_replace('#(n|N)edo#si', '<a href="www.strona/nfrch.html"><em>1edo</em></a>', $nazwa);
  23. $nazwa = preg_replace('#(s|S)oppec#si', '<a href="www.strona/soppfrch.html"><em>1oppec</em></a>', $nazwa);
  24. $nazwa = preg_replace('#(r|R)ichter#si', '<a href="www.strona/richfrch.html"><em>1ichter</em></a>', $nazwa);
  25. $nazwa = preg_replace('#(r|R)adiodetection#si', '<a href="www.strona/radifrch.html"><em>1adiodetection</em></a>', $nazwa);
  26. $nazwa = preg_replace('#(d|D)alekomierz(a|u)e)#si', '<a href="www.strona/dalfarch.html"><em>1alekomierz2</em></a>', $nazwa);
  27. $nazwa = preg_replace('#(s|S)outh#si', '<a href="www.strona/soufrch.html"><em>1outh</em></a>', $nazwa);
  28. $nazwa = preg_replace('#(s|S)zkicownik(a|u|i|ów)#si', '<a href="www.strona/szkicfarch.html"><em>1zkicownik2</em></a>', $nazwa);
  29. $nazwa = preg_replace('#(g|G)ps#si', '<a href="www.strona/gf.html"><em>1ps</em></a>', $nazwa);
  30. $nazwa = preg_replace('#(r|R)uletk(a|i)#si', '<a href="www.strona/rufh.html"><em>1uletk2</em></a>', $nazwa);
  31. $nazwa = preg_replace('#(t|T)aśm(a|y)#si', '<a href="www.strona/tfrch.html"><em>1aśm2</em></a>', $nazwa);
  32. $nazwa = preg_replace('#(k|K)artografia#si', '<a href="www.strona/kartogfarch.html"><em>1artografia</em></a>', $nazwa);
  33. $nazwa = preg_replace('#(w|W)odowskaz(owa)#si', '<a href="www.strona/wodofrch.html"><em>1odowskaz2</em></a>', $nazwa);
  34. $nazwa = preg_replace('#(l|L)aserliner#si', '<a href="www.strona/lasefrch.html"><em>1aserliner</em></a>', $nazwa);
  35. $nazwa = preg_replace('#(m|M)iernik(a|ów|i)#si', '<a href="www.strona/mierfch.html"><em>1iernik2</em></a>', $nazwa);
  36. $nazwa = preg_replace('#(r|R)ektyfikacja#si', '<a href="www.strona/rektfarch.html"><em>1ektyfikacja</em></a>', $nazwa);
  37. $nazwa = preg_replace('#(p|P)rzegląd(y|ów)#si', '<a href="www.strona/przfch.html"><em>1rzegląd2</em></a>', $nazwa);
  38. $nazwa = preg_replace('#(s|S)erwis#si', '<a href="www.strona/sfarch.html"><em>1erwis</em></a>', $nazwa);
  39. $nazwa = preg_replace('#(b|B)udownictwo#si', '<a href="www.strona/budownfrch.html"><em>1udownictwo</em></a>', $nazwa);
  40. $nazwa = preg_replace('#(d|D)almierz(a|ów|e|y)#si', '<a href="www.strona/dalfrch.html"><em>1almierz2</em></a>', $nazwa);
  41. $nazwa = preg_replace('#(n|N)iwelator(a|u|y|ów)#si', '<a href="www.strona/niwfrch.html"><em>1iwelator2</em></a>', $nazwa);*/
  42.  
  43.  
  44.  
  45. $nazwa = preg_replace("#<P><FONT (.*?)><STRONG>(.*?)</STRONG></FONT></P>#si", "<h2 class='prod_h2'>2</h2>", $nazwa);
  46. $nazwa = preg_replace("#<P><FONT (.*?)><b>(.*?)</b></FONT></P>#si", "<h2 class='prod_h2'>2</h2>", $nazwa);
  47. $nazwa = preg_replace("#<P><b><FONT (.*?)>(.*?)</FONT></b></P>#si", "<h2 class='prod_h2'>2</h2>", $nazwa);
  48. $nazwa = preg_replace("#<b>(.*?)</b>#si", "<strong>1</strong>", $nazwa);
  49. return $nazwa;
  50. }
  51.  
  52. $tekst = "tekst wyciągnięty z jakiejś bazy (MySQL bądź ze zwykłego pliku)";
  53. echo zamien($tekst);
  54. ?>
Go to the top of the page
+Quote Post
craker
post 29.10.2007, 16:04:32
Post #8





Grupa: Zarejestrowani
Postów: 87
Pomógł: 1
Dołączył: 7.07.2006

Ostrzeżenie: (0%)
-----


to wiem, ale mi chodzi, o wykonanie tego:

Cytat
Ewentualnie w wyrażeniu zaznacz ze ciąg znaków nie może sie zaczynać "> i kończyć </a>


--------------------
narazie brak sygnaturki
Go to the top of the page
+Quote Post
b_chmura
post 29.10.2007, 17:25:51
Post #9





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


Kod
'#[^><em>](t|T)achimetr(a|ów|y|u|ia)[^</em></a>]#si'


coś w ten deseń
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 01:16