Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyrażenia regularne
Forum PHP.pl > Forum > PHP
gkeb
Mam coś takiego:
Kod
<a href=http://moj.serwer.gdzies.com/img/123456.jpg><img src="http://moj.serwer.gdzies.com/img/123456.jpg" border=0 width=64 height=48 alt="super opis"></a>

jak z tego wyciagnac to co znajduje sie w alt?? Próbowalem przez substr() ale działa tylko w momencie gdy moge zapewnić stałą długość znacznika (nazwa pliku i katalogi musza mieć stałą wielkość. Rozumiem ze najlepiej byłoby wyciągnąć to poprzez wyrażenia regularne ale na tym sie nie znam sad.gif
Spróbowałem czegoś takiego:
[php:1:ed34137c45]<?php
$stronka=fopen("http://http://moj.serwer.gdzies.com/galeria.html","r");
if (!$stronka)
{
echo "brak strony<br>";
}else{

while (!feof($stronka))
{

$temp=fgets($stronka, 1000);
$wzor='^alt=[[:print:]]*></a>$';
eregi($wzor, $temp, $test);

$licz0=0;
for ($start=0; $start<=count($test); $start=$start++)
{

$opis[$licz0]=$test[$start];
$licz0++;
}

}
}
echo $opis[0];

?>[/php:1:ed34137c45]
I nie działa. Prawdopodobnie zły wzór, ale jak wyżej napisałem wyrażenia regularne to dla mnie czarna magia jak na razie.
netzah
zbadaj to:
[php:1:de20e5c1d6]<?php

ereg(".*alt=['"](.*)['"]", $twoj_tekst, $reg);
echo $reg[1];

?>[/php:1:de20e5c1d6]
gkeb
To niezupełnie działa. Na stronie jest ok 20-25 obrazków (galeria) a pokazuje mi grafike ktora jest na samym dole sad.gif i nic wiecej. Potrzebuje by wyciagnac ten opis i wpisac go do jakiejs tabelki by latwo mozna na tym pracowac dalej.
netzah
No tak, ale jak wstawisz to do swojej petli, to kazda linia bedzie sprawdzana na obecnosc wyrazenia.
gkeb
Ok, znajduje poczatek wyrażenia (opisu z alta) wypisuje tekst (jak z przykladu):
super opis"></a><a href=......
i jak widac powyżej zczytuje jeszcze znacznik końca i nastepny znacznik a tego nie chce by wypisywał. Wiec to jeszcze nie to sad.gif
Powinien odczytac od znacznika alt=" do ">
BzikOS
[php:1:d6bb19e790]<?php
$str = '<a href=http://moj.serwer.gdzies.com/img/123456.jpg><img src="http://moj.serwer.gdzies.com/img/123456.jpg" border=0 width=64 height=48 alt="super opis"></a>';

preg_match_all( '|<img.*?alt="(.*?)".*?>|si', $str, $match );
print_r( $match[1] );
?>[/php:1:d6bb19e790]
netzah
Hm, to dziwne, bo

[php:1:2fecf19459]<?php

$s ='<a href=http://moj.serwer.gdzies.com/img/123456.jpg><img src="http://moj.serwer.gdzies.com/img/123456.jpg" border=0 width=64 height=48 alt="super opis"></a>';

ereg(".*alt=['"](.*)['"]", $s, $reg);
echo '['.$reg[1].']';

?>[/php:1:2fecf19459]

daje mi w wyniku [super opis].
rze-X-nik
Może wyrwę Was trochę z kontekstu topica, ale mam małe pytanko: czy ktoś opisał dokładnie po polsku (nie znaczy, że nie znam angielskiego) ten rozdział wyrażeń regularnych? Nie interesuje mnie ten rozdział z manuala, bo za wiele mi nie wyjaśnia.
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.