Toon posts:

lastig preg_replace probleem

Pagina: 1
Acties:
  • 435 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste mede coders!

Ben de hele dag aan het proberen geweest maar nog steeds geen geluk.

Ik zal even kort uitleggen wat de bedoeling is, misschien kan iemand me helpen!

Ik heb een array $items, die bestaat ook weer uit arrays met daarin weer alle eigenschappen van het item. In de tekst van elk item ( $item[$i]['text'] ) kunnen meerdere plaatjes voorkomen. Nu is het gelukt om van de plaatjes een link te maken maar nu moet ik die link ook nog vullen met het pad en bestandsnaam van het plaatje. Dit is om lightbox automatisch toe te voegen aan plaatjes welke met TinyMCE in de database gezet zijn. Ik heb al met veel moeite het pattern voor het path en filename kunnen maken. Alleen heb ik die in een array staan en kan ik die maar 1x gebruiken tijdens mijn preg_replace!

Is er misschien iemand die weet hoe ik het path+filename kan "kopieren" uit de img src?

PHP:
1
2
3
4
5
6
7
8
9
10
11
for ($i=0; $i<count($items); $i++) {

      // vul array met alle sources van de <IMG> tags in $items[$i]['text']
      preg_match_all('#src="(.*?)?"#s', $items[$i]['text'], $match);

      // maak een link van alle plaatses in $items[$i]['text']
      $pattern = '#(<img[^<>]*>)#Usi';
      $replace = "<a href=\"x\" target=\"_blank\">$1</a>";
      $items[$i]['text'] = preg_replace($pattern, $replace, $items[$i]['text']);

}

[ Voor 7% gewijzigd door Verwijderd op 16-10-2006 22:52 ]


  • EdwinG
  • Registratie: Oktober 2002
  • Laatst online: 12-02 21:01
Weet je zeker dat
code:
1
#src="(.*?)?"#s

Alleen de image-sources als resultaat heeft?
Zit er bijvoorbeeld nergens
code:
1
<script type="text/javascript src="xxx.js">
in de teksten? Die zou namelijk ook opgepakt worden.

Maar om
code:
1
 <img src="xxx.jpg" alt="blabla">

Te vervangen door
code:
1
 <a href="xx.jpg"><img src="xxx.jpg" alt="blabla">

Kun je bijvoorbeeld het volgende gebruiken:
PHP:
1
2
3
$pattern = '/(<img .* src="([a-z0-9\.\/_-]+)" .*>)/';
$replace = '<a href="$2">$1</a>';
$tekst = preg_replace($pattern,$replace,$tekst);

Bezoek eens een willekeurige pagina


Verwijderd

Topicstarter
ik ben er inmiddels achter!

PHP:
1
2
3
4
5
6
7
$i_count=count($items);
    for ($i=0; $i<$i_count; $i++) {
    $i_count=count($items);//wordt anders volgens mij elke keer opnieuw geteld
    $pattern = '|(<img[^>]+src\s*=\s*(["\']??)([^"\']*)(\2)([^>]*)>)|Usi';
    $replace = "<a href=\"$3\" target=\"_blank\">$1</a>"; 
        $items[$i]['text'] = preg_replace($pattern, $replace, $items[$i]['text']); 
}