Autor | Zpráva | ||
---|---|---|---|
Kajda Profil * |
#1 · Zasláno: 14. 1. 2013, 10:37:52
Dobrý den,
řeším problém se zápisem regulárního výrazu. Potřeboval bych zapsat: vyhovuje řetězec, který neobsahuje slovo ... Umím zapsat neobsahuje znak: [^x]*, ale nevím, jak v podobné logice zapsat "neobsahuje slovo". Je to možné? Děkuji předem za odpovědi. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 14. 1. 2013, 13:01:22
Kajda:
„Je to možné?“ Možné to je, ale je lepší se tomu vyhnout, tj. použít např. if (!preg_match('#slovo#', $text)) { // v takto jednoduchém případu by bylo lepší použít strpos ... } |
||
Kajda Profil * |
#3 · Zasláno: 14. 1. 2013, 13:38:46
Jan Tvrdík: Děkuji. Možná mě to trochu oklikou navedlo na - možná poněkud jednoduchou - myšlenku nahradit slovo málo používaným znakem a poté použít "neobsahuje znak". Uvedený případ nemohu použít. Mým problém je jak z HTML kódu vyextrahovat jednu jedinou tabulku s daným class. Dokážu si najít její začátek, ale už ne konec.
Potřeboval jsem tedy něco jako $hodnota = Preg_Replace ("/^.*(<table[^>]*class=\"infoi nobord ssm\"[^>]*>[cokoliv co není table]*<\/table>).*$/s", "\\1", $zdroj); jinak se mi samozřejmě vrací vše až po poslední uzavírací tag tabulky, což nechci. Já potřebuji jen tu jednu konkrétní. |
||
peta Profil |
Priklad na nahrazeni obsahu divu, pokud uvnitr neni jiny div. $str = '<div class="main_content">'; $pos1 = strpos($data, $str) + strlen($str); $str = '</div>'; $pos2 = strpos($data, $str,$pos1); $data = substr_replace($data, $insert_code, $pos1, $pos2-$pos1); |
||
Jan Tvrdík Profil |
Kajda:
„jak z HTML kódu vyextrahovat jednu jedinou tabulku s daným class“ Na to neslouží regulární výrazy, ale DOMDocument a DOMXPath. Pokud ti nevadí, že to děláš špatně, tak pravděpodobně hledáš ungreedy variantu * .
$hodnota = Preg_Replace ("/^.*(<table[^>]*class=\"infoi nobord ssm\"[^>]*>*?<\/table>).*$/s", "\\1", $zdroj); |
||
DJ Miky Profil |
#6 · Zasláno: 14. 1. 2013, 14:41:47
Ještě tečku:
$hodnota = Preg_Replace ("/^.*(<table[^>]*class=\"infoi nobord ssm\"[^>]*>.*?<\/table>).*$/s", "\\1", $zdroj); |
||
Kajda Profil * |
#7 · Zasláno: 14. 1. 2013, 15:04:51
Díky za odpovědi. O DOM jsem v PHP vůbec nevěděl, ungreedy varinatu také neznám. Jdu studovat, díky za nákop.
|
||
Časová prodleva: 6 měsíců
|
|||
PetrFox Profil * |
#8 · Zasláno: 6. 7. 2013, 08:18:49
Jan Tvrdík:
> „jak z HTML kódu vyextrahovat jednu jedinou tabulku s daným class“ > Na to neslouží regulární výrazy, ale DOMDocument a DOMXPath. Jan Tvrdík, Jan Tvrdík: DOMDocument je třída pro XML dokumenty, HTML s neuzavřenými elementy není XML. DOMDocument lze použít pro XHTML. |
||
Časová prodleva: 11 let
|
0