PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Zdravím :). Mám tento HTML kód:
<td align='center' style='width: 50%'>
<table>
<tr>
<td><img src='../pictures/skilly/Cannibalize.gif' alt=''></td>
</tr>
</table>
</td>
<td align='center' style='width: 50%'>
<table>
<tr>
<td><img src='../pictures/skilly/Cannibalize.gif' alt=''></td>
</tr>
</table>
</td>
ze kterého potřebuju vytáhnout cestu k obrázku, což dělám takhle:
<?php
$text = '*kód*';
$a = preg_match_all('#<td align=\'center\' style=\'width: 50%\'>[\v\s]*<table>[\v\s]*<tr>[\v\s]*<td><img src=\'../pictures/skilly/([\w ]+)\.gif\' alt=\'\'</td>[\v\s]*</tr>[\v\s]*</table>[\v\s]*</td>#i', $text, $result);
?>
Jenže tento výraz mi najde pouze první cestu (cesty se mění, proto regulární výraz). Postupným mazáním jsem zjistil, že víc výsledků najde regulární výraz pouze pokud je takovýto:
<?php
$text = '*kód*';
$a = preg_match_all('#<td align=\'center\' style=\'width: 50%\'>[\v\s]*<table>[\v\s]*<tr>[\v\s]*<td><#i', $text, $result);
?>
Jakmile na konec výrazu přidám za ,,<" ,,i", výraz najde jenom jednu shodu. Nevíte někdo proč to tak je? Já nad tím dumám už několik hodin a pořád nic :(
Odhadem bych řekl, že to bude tím, že ti tam chybí uzavírají znak
> pro tag img:
Správně tedy:
<?php
$a = preg_match_all('#<td align=\'center\' style=\'width: 50%\'>[\v\s]*<table>[\v\s]*<tr>[\v\s]*<td><img src=\'../pictures/skilly/([\w ]+)\.gif\' alt=\'\'></td>[\v\s]*</tr>[\v\s]*</table>[\v\s]*</td>#i', $text, $result);
?>
(Tedy za část alt=\'\', přijde ještě
>.)
Tomik – tomik@jmx.cz | http://tomik.jmx.cz
Bylo to tam, díky :).