Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyrażenie regularne i funkcja preg_replace
axwell
post
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 1
Dołączył: 14.11.2007

Ostrzeżenie: (10%)
X----


Sprawa wygląda następująco....

mam ciąg tekstowy, założmy
Cytat
City View [by nikon]


w nawiasie kwadratowym może znajdować się wszelaki tekst. Chciałbym, aby ten cały nawias był odcinany, czyli w powyższym przypadku zostałby tekst "City View". Do tej pory robiłem to funkcją explode - dzieliłem tekst od znaku "[". Niestety rozwiązanie to nie jest już odpowiednie, dlatego proszę o pomoc w konstrukcji wyrażenie dla funkcji preg_replace
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rel
post
Post #2





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 9.01.2014

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


Wszystko ładnie pięknie, ale co zrobić w momencie, gdy np z takiego linku:

Kod
http://oglaszajtu.pl/ogloszenia/54/Dom Wieruszów, pow. 150m2


chcę usunąć "," i "." no i do tego spację zamienić na "-"

A od poczatku to tak:

1. Generuję sobie plik .xml kodem:

  1. <?php
  2. function lacz_bd()
  3. {
  4. $db = new mysqli('localhost', '_admin', 'pass', 'baza');
  5. if (! $db)
  6. return false;
  7. $db->autocommit(TRUE);
  8. return $db;
  9. }
  10. // dane do ramy pliku .xml
  11. $kanalRSS = '<?xml version="1.0" encoding="ISO-8859-2"?>';
  12. $kanalRSS .= '<trovit>';
  13. $kanalRSS .= '<ad>';
  14.  
  15. // połaczenie z bazą danych
  16. $db = lacz_bd();
  17. //zapytanie określające dane ktore powinny byc pobrane z tabeli
  18. // teraz pobierzmy wszystkie dane spelniajace warunek category_id=140
  19. $zapytanie = "SELECT * FROM announcements WHERE category_id in (140,141,142,143,144)";
  20. $wynik = $db->query($zapytanie);
  21. $ile_znalezionych = $wynik->num_rows;
  22. for ($i=0; $i <$ile_znalezionych; $i++)
  23. {
  24. $wiersz = $wynik->fetch_assoc();
  25.  
  26. //usuwamy znaczniki html ze wszystkich danych z tabeli
  27. $wiersz['annoucement_content'] = strip_tags($wiersz['annoucement_content']);
  28. $string = $wiersz['annoucement_title'];
  29. $pattern = '/ /';
  30. $replacement = '-';
  31. $wiersz['annoucement_title'] = preg_replace($pattern, $replacement, $string);
  32.  
  33. //tutaj generujemy zawartosc pliku .xml, ktora pobierana jest z tabeli announcements
  34. $kanalRSS .= '<item>';
  35. $kanalRSS .= '<id><![CDATA['.$wiersz['annoucement_id'].']]></id>';
  36. $kanalRSS .= '<url><![CDATA[http://oglaszajtu.pl/ogloszenia/'.$wiersz['annoucement_id'].'/'.$wiersz['annoucement_title'].']]></url>';
  37. $kanalRSS .= '<title><![CDATA['.$string.']]></title>';
  38. $kanalRSS .= '<type><![CDATA['.$wiersz['annoucement_type'].']]></type>';
  39. $kanalRSS .= '<content><![CDATA['.$wiersz['annoucement_content'].']]></content>';
  40. $kanalRSS .= '<date><![CDATA['.$wiersz['annoucement_date_added'].']]></date>';
  41. $kanalRSS .= '</item>';
  42. }
  43. $kanalRSS .= ' </ad>';
  44. $kanalRSS .= '</trovit>';
  45.  
  46. //Zapisujemy wygenerowany kod XML do pliku moj_rss.xml
  47. $fp = fopen('trovit_oglaszajtu.xml','w');
  48. fwrite($fp,$kanalRSS);
  49. fclose($fp);
  50. ?>


spacje zamieniłem już na "-" ale pozostaje sprawa wywalenia "," i ".".
Podpowie ktoś w którą stronę spojrzeć? bo próbowałem tak jak w manualu pokazują array(), ale wywala mi bład.

jak widać tutaj
Kod
$kanalRSS .= '<url><![CDATA[http://oglaszajtu.pl/ogloszenia/'.$wiersz['annoucement_id'].'/'.$wiersz['annoucement_title'].']]></url>';
    $kanalRSS .= '<title><![CDATA['.$string.']]></title>';


dałem dwie $, które sa niemal tym samym, tyle tylko, że musiałem to tak zagmatwać, gdyż w linku ma usuwać pewne znaki i zamieniać, zas poniżej w title ma je zostawiać, a innego rozwiaznaia nie znalazłem/wymyśliłem.
A i jeszcze sprawa zamiany dużych liter na małe

  1. <?php
  2. //.....
  3. //usuwamy znaczniki html ze wszystkich danych z tabeli
  4. $wiersz['annoucement_content'] = strip_tags($wiersz['annoucement_content']);
  5. $string = $wiersz['annoucement_title'];
  6.  
  7. $pattern = array();
  8. $pattern[0] = '/ /';
  9. $pattern[1] = '/,/';
  10. $pattern[2] = '/./';
  11. $replacement = array();
  12. $replacement[2] = '-';
  13. $replacement[1] = '';
  14. $replacement[0] = '';
  15. $wiersz['annoucement_title'] = preg_replace($pattern, $replacement, $string);
  16.  
  17. ?>


taki kodzik nie daje efektu, mało tego usuwa mi końcówkę adresu/urla.

Ten post edytował rel 11.02.2014, 13:40:54
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.10.2025 - 04:12