Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [BBCode] Dodatkowe atrybuty obrazków
Forum PHP.pl > Forum > PHP
Grzyw
Mam standardowo zaimplementowane osadzanie obrazków w edytorze BBCode, poprzez funkcję:
  1. <?php
  2. $str = preg_replace("#[img](.*?)[/img]#si", "<img src="1" border="0" alt="Obrazek" />", $str)
  3. ?>


Zatem w edytorze kod wstawiający obrazek ma postać:


Chciałbym uzyskać przetworzenie kodu:
  1. [img width=nnn height=nnn]src.jpg[/img]

Niestety, nie potrafię przerobić funkcji preg_replace() w odpowiedni sposób.

Dlatego proszę Was o wskazówkę:)
starach
Nie testowane:
'#\[img width=([^ ]*) height=([^\]]*)\]([^\[]+)\[/img\]#'
Grzyw
Niestety, moja implementacja nie działa. Zrobiłem bałagan sad.gif
Mam kod:

  1. <?php
  2. $tekst='[img width=43 height=435]source[/img]';
  3. echo "Przed: ".$tekst;
  4. $tekst= preg_replace('#[img width=([^ ]*) height=([^]]*)]([^[]+)[/img]#', "<img src='2' width='0' height='1' />", $tekst);
  5. echo "<br />Po: ".$tekst;
  6. ?>


W efekcie dostaję:
Kod
<img src=\"435\" width="[img width=43 height=435]source[/img]\" height="43\" />


Mogę prosić o wskazanie błędów?
Kicok
Tekst znaleziony "pod pierwszym nawiasem okrągłym" dostępny jest jako \\1
Tekst znaleziony "pod drugi nawiasem okrągłym" dostępny jest jako \\2
itd.

Pod \\0 dostępny jest tekst podasowany co całego wyrażenia.


PS. Ten kod nie wyłapie ci tagów bez podanej szerokości i wysokości, tagów z podaną tylko szerokością, tagów z podaną tylko wysokością i tagów z wysokością podaną przed szerokością.
Na pewno da się to wszystko odczytać przy pomocy jednego wyrażenia, ale łatwiej ci będzie rozbić to na kilka
abc667
poza tym zmień [^\]] na np [0-9]{1,3} bo tak jak jest teraz pozwala na wpisanie dowolnego kodu na stronę
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.