| Autor | Zpráva | ||
|---|---|---|---|
| Zechy Profil |
#1 · Zasláno: 26. 4. 2013, 22:57:18
Zdravím,
mám text ve formátu "= nějáký text =", kdy chci takhle odlišit nadpisy, ovšem problémem je, že se mi nedaří napsat preg_match, který by získal to co potřebuju, povedlo se mi maximálně získat jedno rovná se, a to možná ještě z konce řádku. Regulérní výraz mám v tomto tvaru: (To teda nic nevyhledá) preg_match_all("/\=[A-z+(ěščřžýáíé)+(ĚŠČŘŽÝÁÍÉ)?\s]\=/", $obsah, $match); |
||
| Tori Profil |
Pokud jsou nadpisy na samostatném řádku (jako např. wiki syntax), tak by stačilo i něco takovéhoto:
echo preg_replace('~(?:^=\h*)(.+)(?:=\h*$)~m', '<h1>$1</h1>', $text); |
||
| Zechy Profil |
#3 · Zasláno: 26. 4. 2013, 23:19:37
Tori:
Jojo, jedná se o samostatnej řádek, děkuju. Tohle mi zabere půl století než ty regulérní výrazy pochopim :-) |
||
| Tori Profil |
Trochu jsem to zjednodušila, aserce byly zbytečné.
Dá se to snadno upravit na nahrazování == → h2, === → h3 atd. echo preg_replace_callback('~(?:^(=+)\h*)(.+)(?:\1\h*$)~m', function($m) {
$tag = 'h'.min(strlen($m[1]), 6);
return "<$tag>$m[2]</$tag>";
}, $text); |
||
| 1Pupik1989 Profil |
Já používám něco podobného.
$text = preg_replace_callback("~(\=+)\s*([^\=]+)\=+~",function($m){
$tag = 'h'.max(strlen($m[1]),6);
return '<'.$tag.'>'.$m[2].'</'.$tag.'>';
},$text);Více méně myšlenka je ta samá. |
||
| Tori Profil |
1Pupik1989:
„Více méně myšlenka je ta samá.“ Řádek 2 máte naopak (min/max) - vytvoří se vám nadpis minimálně H6 (když zadám 1-6 rovnítek) nebo s vyšším číslem. Ale na druhou stranu najde nadpis kdekoli, nejen na samostatném řádku. |
||
| Zechy Profil |
#7 · Zasláno: 27. 4. 2013, 19:44:19
Tak ono stačí najít pouze jedno rovná se, bo v popisu už se žádný nadpis vyskytovat nebude
|
||
|
Časová prodleva: 13 let
|
|||
0