Autor Zpráva
Rypi
Profil
Ahoj,
potřebuju poradit jak upravit tento script, aby jeho výstup byl
[0] => <b>tucny</b>
[1]=> <b>kysely</b>


ted je výstup:
[0] => <b>tucny</b> a <b>kysely</b>
[1] => tucny</b> a <b>kysely

<?php
$html = "já jsem <b>tucny</b> a <b>kysely</b>";
preg_match("/<b>(.*)<\/b>/i", $html, $match);
print_r($match); 
?>


Díky moc :)

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Majkl578
Profil
$html = 'já jsem <b>tucny</b> a <b>kysely</b>';
preg_match_all('~<b>.*</b>~Ui', $html, $matches);
var_dump($matches);
Yur4Y
Profil
Myslím, že stačí použiť (.*?) miesto (.*). Riešenie s modifikátorom U je tiež správne, len pozor, aby sa to potom nebilo, keď budete používať zložitejšie regexpy.
Rypi
Profil
díky, ale ten kód vrátí dvakrát první nález, a druhý už nehledá...:
[0] => <b>tucny</b>
[1] => <b>tucny</b>
Majkl578
Profil
Yur4Y:
Osobně používám častěji vlastnost ungreedy, takže raději použiji U. Ale každý ať používá co se mu líbí, to je jako s delimitery, já rád vlnovku, někdo lomítko.

Rypi:
Ve všem spěchu jsem zapomněl změnit funkci na preg_match_all. Opraveno.
Rypi
Profil
Díky, zkoušel jsem to, ale asi jsem použil můj reg. výraz, takže mi to nešlo. Teď už je to OK.
Ještě jedna věc. Vypíše mi to všechny nálezy 3x, potřetí už bez <b> a </b> značek.
je jiná možnost, než:
 print_r($match[0]);
?
jinak pokud víte nějakou příručku pro regulární výrazy, bylo by to fajn. Na regularnivyrazy.info toho je dost, ale takovéhle věci se tam (nejspíše) nedozvím.
Majkl578
Profil
Rypi:
U mě je výstup scriptu z [#2] toto:
array
  0 => 
    array
      0 => string '<b>tucny</b>' (length=12)
      1 => string '<b>kysely</b>' (length=13)


Vypíše mi to všechny nálezy 3x, potřetí už bez <b> a </b> značek.
Nemáš ve výrazu nějaké obyčejné závorky, které by něco zachycovaly?

jinak pokud víte nějakou příručku pro regulární výrazy, bylo by to fajn
Já chodil na tebou zmíněnou stránku a na www.regular-expressions.info/.
Teď chodím už jen do manuálu PCRE, sekce PCRE Patterns.
Rypi
Profil
Jo, už to jede dobře. Závorky tam byly, ale přísahám, že si je taky psal :D
Díky moc za rychlou pomoc ;)
Majkl578
Profil
[#8] Rypi
Prvně ano, podruhé když jsem měnil funkci jsem je smazal, neměly význam, protože výsledný obsah byl stejný. Tahle funkce běžně vrací v jednom poli část řetězce, ve kterém se hledá a v druhém poli nalezené hodnoty.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: