Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Bardziej zaawansowana zamiana ciągu
Forum PHP.pl > Forum > Przedszkole
servs
Witam!
Przykładowo mam taki kod
  1. <img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />


A potrzebuję z niego mieć coś takiego
  1. <a href="/files/image/zen4-640.jpg" rel="lightbox" title="tytuł"><img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" /></a>


Wymodziłem coś takiego
  1. <?php
  2. $image = '<img';
  3. $txt = str_replace($image, '<a href="/files/image/zen4-640.jpg" rel="lightbox" title="tytuł">'.$image , $row['desc']);
  4. $ok = str_replace('alt="" />', ''alt="" />'</a>' , $txt);
  5. ?>


Lecz problem w tym, że obrazki mogą być różne i muszę wyciągnąć z każdego ciągu wartość (w tym przypadku /files/image/zen4-640.jpg lub przynajmniej zen4-640.jpg), więc jak te wartości wytargać?
nazwy obrazków są różnej długości, a skrypt musi być uniwersalny.

Proszę o pomoc.

Pozdrawiam!
servs
Funkcja jest ok, jednak jakby to miało wyglądać w przypadku, kiedy ścieżkę z img chcę wykorzystać w a?
Jak to wprowadzić w zmienną lub ew. wykorzystać?
Najlepiej prosiłbym o jakiś przykład a'la mojego przypadku.
sada
Kod
<?php
   $tekst='<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />';
   $znak1='src="';
   $znak2='"';
   $tekst=strstr( $tekst,$znak1);
   $tekst=substr($tekst,strlen($znak1));
   $pozkon=strpos($tekst,$znak2);
   $tekst=substr( $tekst,0,$pozkon);
   echo $tekst;
   ?>
Spawnm
przykład:
  1. <?php
  2. $string='<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />';
  3. $str=preg_replace('/<img(.*)  src="(.*)"(.*)>/','<b>$2</b>',$string);
  4. echo $str;// <b>/files/image/zen4-640.jpg</b>
  5. ?>
servs
Funkcja
  1. <?php
  2. $tekst='<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />';
  3.   $znak1='src="';
  4.   $znak2='"';
  5.   $tekst=strstr( $tekst,$znak1);
  6.   $tekst=substr($tekst,strlen($znak1));
  7.   $pozkon=strpos($tekst,$znak2);
  8.   $tekst=substr( $tekst,0,$pozkon);
  9.   echo $tekst;
  10. ?>

Działa znakomicie, jednak wychwytuje tylko pierwszy <img />, co w takim razie zrobić, jeśli HTML wygląda np tak
  1. <img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />
  2. <img height="90" width="120" align="right" src="/files/image/wii.jpg" alt="" />

?

Kod
  1. <?php
  2. $string='<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />';
  3. $str=preg_replace('/<img(.*)  src="(.*)"(.*)>/','<b>$2</b>',$string);
  4. echo $str;// <b>/files/image/zen4-640.jpg</b>
  5. ?>

Wyświetla dokładnie wartość początkową $string...

Proszę o podsunięcie rozwiązania do mojego problemu, ponieważ ja niestety wysiadam sad.gif
Pozdrawiam!
sada
To zadziała do nieograniczonej ilości adresów.
Zamiast echo można wrzucić do tablicy


Kod
<?php
$tekst='<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />
<img height="90" width="120" align="right" src="/files/image/wii.jpg" alt="" />';
$znak1='src="';
$znak2='"';

while (substr_count($tekst,$znak1)>0)
    {
    
    $tekst=strstr( $tekst,$znak1);
    $tekst=substr($tekst,strlen($znak1));
    $pozkon=strpos($tekst,$znak2);
    $adres=substr( $tekst,0,$pozkon);
    echo $adres.'<br />';
    }
?>


Jeśli chciałbyś wyłuskiwać src tylko ze znaczników img trzeba by dodać jeszcze dwie linijki na początku, bo ten kod wyłuska wszystkie src-y.
servs
No tak... Kolega mi doskonale pomaga, jednak przedstawiłem problem od du*y strony...

Dokładnie chodzi mi o uzyskanie systemu, dzięki któremu taki ciąg:
  1. sratatatatatatatata<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />sratatatatatatatatat<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />sratatatatatatatat

Będe mógł zamienić na taki:
  1. sratatatatatatatata<a href="/files/image/zen4-640.jpg" target="_blank"><img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" /></a>sratatatatatatatatat<a href="/files/image/wii.jpg" target="_blank"><img height="90" width="120" align="right" src="/files/image/wii.jpg" alt="" /></a>sratatatatatatatat
[/html]

Podejrzewam, że da się to wypełnić za pomocą kodu, który już udało się stworzyć, jednak jak dorzucić ten tekst wokół img na swoje miejsce?
Wybaczcie mogą upierdliwość, ale koszmarnie radzę sobie z tego typu operacjami na ciągach smile.gif

Pozdrawiam!
sada
  1. <?php
  2. $tekst='sratatatatatatatata<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />sratatatatatatatatat<img height="90" width="120" align="right" src="/files/image/wii.jpg" alt="" />sratatatatatatatat';
  3.  $znak0='<img';
  4.  $znak1='src="';
  5.  $znak2='"';
  6.  $znak3='<a href="';
  7.  $znak4='" target="_blank">';
  8.  $znak5='/>';
  9.  
  10.  $efekt="";
  11.  while (substr_count($tekst,$znak1)>0)
  12.      {
  13.      $poz=strpos($tekst,$znak0);
  14.      $czesc1=substr($tekst,0,$poz);
  15.      $tekst=strstr($tekst,$znak0);
  16.      $poz=strpos($tekst,$znak1);
  17.      $czesc2=substr($tekst,0,$poz);
  18.      $tekst=strstr( $tekst,$znak1);
  19.      $tekst=substr($tekst,strlen($znak1));
  20.      $poz=strpos($tekst,$znak2);
  21.      $adres=substr( $tekst,0,$poz);
  22.      $efekt=$efekt.$czesc1.$znak3.$adres.$znak4.$czesc2.$znak1.$adres;
  23.      $tekst=substr($tekst,$poz);
  24.      $poz=strpos($tekst,$znak5);
  25.      $czesc3=substr( $tekst,0,$poz+2);
  26.      $efekt=$efekt.$czesc3.'</a>';
  27.      }
  28.      $czesckoncowa=substr($tekst,$poz+2);
  29.      $efekt=$efekt.$czesckoncowa;
  30.      echo htmlspecialchars($efekt);
  31.  ?>
Wicepsik
Trochę meczenia, ale chciałem zobaczyć jak to zrobić winksmiley.jpg

  1. <?php
  2. $tekst='sratatatatatatatata<img height="90" width="120" align="right" src="/files/image/zen4-640.jpg" alt="" />sratatatatatatatatat<img height="80" width="130" align="right" src="/files/image/wii.jpg" alt="" />sratatatatatatatat';    
  3.  
  4. $wzor = '/<img height="([0-9]+)" width="([0-9]+)" align="([a-z]+)" src="/files/image/([a-zA-Z0-9-]+).jpg" alt=([a-zA-Z"]+) />/';
  5. echo preg_replace($wzor, '<a href="/files/image/$4.jpg" rel="lightbox" title=$5><img height="$1" width="$2" align="$3" src="/files/image/$4.jpg" alt=$5 /></a>', $tekst);
  6. ?>
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.