Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] problem z preg_replace
craker
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
craker
post
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
Go to the top of the page
+Quote Post
b_chmura
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
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
Go to the top of the page
+Quote Post
b_chmura
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)


b_chmura pomórz proszę bo to jest bardzo ważne dla mnie
Go to the top of the page
+Quote Post
b_chmura
post
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
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>
Go to the top of the page
+Quote Post
b_chmura
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 10:50