Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Usunięcie linku z img i ustawienie długości tekstu.
krzysztof_kf
post
Post #1





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Witam serdecznie mam problem napisałem skrypt który pobiera z bloga który jest postawiony na wordpressie 3 najnowższe posty, wszystko jest ok działa dobrze
ale mam problem jak zrobic żeby nie linkowało mi w danym poscie do ścieżki grafiki, może jest jakaś funkcja która usuwa linka dla atrybutu img druga sprawa jest jak za pomocą funkcji substr zadeklarować ustawienie ilości znaków do wyświetlania próbowałem ale coś mi to nie wychodzi .

Poniżej przedstawiam mój skrypt.

  1. <?php
  2. mysql_connect("localhost", "root") or
  3. die ("Nie mozna połączyć się z MYSQL");
  4.  
  5. mysql_select_db("budrenoma-blog") or
  6. die ("Nie można się połączyć z baza danych budrenoma-blog");
  7.  
  8. $wynik = mysql_query("SELECT * FROM `wp_posts` WHERE `post_status`='Publish'")
  9. or die('Błąd zapytania');
  10.  
  11. if(mysql_num_rows($wynik) > 0) {
  12.  
  13. while($r = mysql_fetch_object($wynik)) {
  14. echo '<div class="blog">';
  15. echo "<h2>".$r->post_title."</h2>";
  16. echo "<p>".$r->post_content."</p>";
  17. echo "<a href=\"{$r->guid}\">Czytaj dalej</a>";
  18. echo "</div>";
  19. }
  20.  
  21. }
  22. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
gorden
post
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


w tym skrypcie nie ma żadnych prób rozwiązania Twoich problemów...
Go to the top of the page
+Quote Post
Bartłomiej Skwar...
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 9
Dołączył: 2.01.2012

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


Wystarczy dodać tutaj dwie funkcje.

  1. <?php
  2. mysql_connect("localhost", "root") or
  3. die ("Nie mozna połączyć się z MYSQL");
  4.  
  5. mysql_select_db("budrenoma-blog") or
  6. die ("Nie można się połączyć z baza danych budrenoma-blog");
  7.  
  8. $wynik = mysql_query("SELECT * FROM `wp_posts` WHERE `post_status`='Publish'")
  9. or die('Błąd zapytania');
  10.  
  11. if(mysql_num_rows($wynik) > 0) {
  12.  
  13. while($r = mysql_fetch_object($wynik)) {
  14. $contentBezObrazow = preg_replace("/<img[^>]+\>/i", "", $r->post_content);
  15. echo '<div class="blog">';
  16. echo "<h2>".$r->post_title."</h2>";
  17. echo "<p>".substr($contentBezObrazow, 0, 200)."</p>";
  18. echo "<a href=\"{$r->guid}\">Czytaj dalej</a>";
  19. echo "</div>";
  20. }
  21.  
  22. }
  23. ?>


Ten post edytował Bartłomiej Skwara 3.01.2012, 21:44:16
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #4





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Bartek dzięki za pomoc, ale nie do końca dobrze wytłumaczyłem o to chodzi że przy nakierowaniu myszką jest odnośnik do obrazka img czy dało by radę za pomocą wyrażenia regularnego usunąc linka do obrazka zachowując obrazek ?
Go to the top of the page
+Quote Post
Bartłomiej Skwar...
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 9
Dołączył: 2.01.2012

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


Wybacz, nie zrozumiałem o co konkretnie biega.
Jeśli chcesz usunąć sam link, a pozostawić obrazki, to powinno zadziałać coś takiego:
  1. $contentBezObrazow = preg_replace(""/<\\/?a(\\s+.*?>|>)/"", "", $r->post_content);

Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #6





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Dzięki wielkie bartek trochę ci się wkradł błąd z cudzysłowiamy, podaję już poprawiony może komuś się przyda .

  1. $contentBezObrazow = preg_replace("/<\\/?a(\\s+.*?>|>)/", "", $r->post_content);


Próbuję jeszcze za pomocą inkrementacji i pętli while ustawić możliwość ograniczenia wyświetleń postów może ma ktoś pomysł ?
Go to the top of the page
+Quote Post
ano
post
Post #7





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


Kurde, po 1.070 postów jeszcze masz takie pytania?
Może to Cię zainteresuje http://php.net/manual/en/control-structures.for.php
  1. for ($i = 1; $i <= 10; $i++) {
  2. echo $i;
  3. }

lub
  1. $i = 0;
  2. $ile = 5;
  3. while(($r = mysql_fetch_object($wynik)) && ++$i<$ile) {
  4. ...
  5. }
Go to the top of the page
+Quote Post
piotrooo89
post
Post #8


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




Cytat(krzysztof_kf @ 3.01.2012, 23:15:44 ) *
Próbuję jeszcze za pomocą inkrementacji i pętli while ustawić możliwość ograniczenia wyświetleń postów może ma ktoś pomysł ?


a nie lepiej już zrobić to po stronie zapytania za pomocą LIMIT?
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #9





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


@piotrooo89 dobrze że mi o tym przypomniałeś ale z początku takie rozwiązanie sobie odpusciłem bo mi nie działało, więc wróciłem i udało taki efekt uzyskać jaki chciałem dzięki i pozdrawiam wszystkich .

Za pomocą jakiej komendy w tym zapytaniu mogę wyświetlac najnowsze posty ? chodzi mi o polecenie sql
Go to the top of the page
+Quote Post
Bartłomiej Skwar...
post
Post #10





Grupa: Zarejestrowani
Postów: 17
Pomógł: 9
Dołączył: 2.01.2012

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


Uzupełnij SELECT o sortowanie według konkretnego pola w konkretnym kierunku - ORDER BY.
  1. ORDER BY `pole_z_datą` DESC

Otrzymasz posty ułożone w kolejności dodania - od najnowszego.

Ten post edytował Bartłomiej Skwara 4.01.2012, 01:01:14
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #11





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Wszystko fajnie ale te wyrażenie regularne za pomocą długości łańcucha substr pobiera wszystkie znaki łącznie ze wszystkim począwszy od linku, a ja potrzebuje uzyć funkcji substr od samego tekstu.


Ma ktoś jakieś propozycje rozwiązania tego problemu.

Ten post edytował krzysztof_kf 4.01.2012, 23:26:14
Go to the top of the page
+Quote Post
piotrooo89
post
Post #12


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




pokaż jak masz teraz, co podajesz i co chcesz otrzymać.
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #13





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Na chwilą obecną mam tak przedstawione na rysunku :

(IMG:http://img835.imageshack.us/img835/3388/catscc.jpg)

za pomocą tego kodu

  1. <?php
  2. mysql_connect("localhost", "root") or
  3. die ("Nie można połączyć się z MYSQL");
  4.  
  5. mysql_select_db("budrenoma-blog") or
  6. die ("Nie można się połączyć z baza danych budrenoma-blog");
  7.  
  8. $wynik = mysql_query("SELECT * FROM wp_posts WHERE post_status='Publish' ORDER BY `post_date` DESC LIMIT 0, 3")
  9. or die('Błąd zapytania');
  10.  
  11. if(mysql_num_rows($wynik) > 0) {
  12.  
  13. while($r = mysql_fetch_object($wynik)) {
  14. $contentBezObrazow = preg_replace("/<\\/?a(\\s+.*?>|>)/", "", $r->post_content);
  15. echo '<div class="blox">';
  16. echo "<p><strong>".$r->post_title."</strong><br />";
  17. echo substr($contentBezObrazow, 0, 300);
  18. echo "<a href=\"{$r->guid}\">Czytaj dalej</a></p>";
  19. echo "</div>";
  20.  
  21. }
  22.  
  23. }
  24. ?>


i tutaj za pomocą wyrażenia regularnego usuwa mi link do zdjęcia, ale jest tutaj problem z funkcją susbtr zamiast ciąg znaków pobierać od samego tekstu to zaczyna pobierać łączny ciąg znaków razem z linkiem do obrazka .

Już nie mam pomysłu.

Ten post edytował krzysztof_kf 5.01.2012, 00:18:12
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a możesz pokazać jeszcze wygenerowany html:

  1. przed operacjami na stringu (czyli prosto z bazy)
  2. po tych operacjach na stringu
  3. i tak jakbyś Ty chciał żeby to było
Go to the top of the page
+Quote Post
krzysztof_kf
post
Post #15





Grupa: Zarejestrowani
Postów: 1 135
Pomógł: 158
Dołączył: 19.03.2009
Skąd: Toruń

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


Udało się ale jest jeden mały problem chce usunąć znacznik /> na począku samej treści co trzeba dopisać do funkcji stristr żeby zaczynał ciąg od poprzedzających tych znaków />

Podgląd http://www.budrenoma.pl/blog

  1. <?php
  2. mysql_connect("sql.dede.pl", "budre", "dede") or
  3. die ("Nie mozna połączyć się z MYSQL");
  4.  
  5. mysql_select_db("budre") or
  6. die ("Nie można się połączyć z baza danych budrenoma-blog");
  7.  
  8. $wynik = mysql_query("SELECT * FROM wp_posts WHERE post_status='publish' ORDER BY `ID` DESC LIMIT 0, 3")
  9. or die('Błąd zapytania');
  10.  
  11. if(mysql_num_rows($wynik) > 0) {
  12.  
  13. while($r = mysql_fetch_object($wynik)) {
  14. $content = $r->post_content;
  15. $obraz = substr($content, 0, strpos($content, "/>"));
  16. $text = stristr($content, '/>');
  17. $text = substr($text, 0, 130);
  18. echo '<div class="blog">';
  19. echo "<span>".$r->post_title."</span>";
  20. echo "<img>".$obraz."</img>";
  21. echo "<p>".$text."</p>";
  22. echo "<a href=\"{$r->guid}\">Czytaj dalej</a>";
  23. echo "</div>";
  24. }
  25.  
  26. }
  27. ?>



Ma ktoś jakiś pomysł.

Ten post edytował krzysztof_kf 8.02.2012, 23:01:14
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 - 17:48