Skocz do zawartości

REGEXP - pytańko


jakubkrol

Polecane posty

Witamn serdecznie.

 

Używam sobie

preg_replace("#\[code=(.*?)?\](.*?)\[/code\]#e", "funkcja_geshi_tekst_prepare('\\1','\\2')", $text);

 

Noo ii... wszystko OK, dopóki jest wszystko w jednej linijce, np:

KOD

$abcd = 'abcd';[/ code]

ale jak dam kilka linii, np:

 

KOD[code=XYZ]$abcd = 'abcd';

$abcd = 'abc3';

$abcd = 'abcf';[ /code]

 

nie mówiąc już jak będzie na początku linii samo, puste:

KOD[code=XYZ]

$abcd = 'abcd';

$abcd = 'abc3';

$abcd = 'abcf';

[ /code]

 

to te dwa ostatnie przypadki nie działają ;/ Domyślam się, że coś mam z moim wyrażeniem regularnym ;)

 

Any ideas?

Link do komentarza
Udostępnij na innych stronach

Tutaj masz z mojego projektu kod, do zmiany tekstu w znaczniku code na geshi, możesz wpisać np. code=cpp itp., żeby wybrać formatowanie wybranego języka. Kodu nie pisałem ja, tylko znalazłem gdzieś na necie jak potrzebowałem.

function kod($text)
{
preg_match_all("#\[code=(.*?)\](.*?)\[/code\]#si",$text,$matches,PREG_PATTERN_ORDER);
       for($i=0; $i<count($matches[0]); $i++) {
               $input = str_replace('<br>','',str_replace('<br />','', str_replace('<br />', '', stripslashes($matches[2][$i]))));
               //replace problematic characters
               $search = array(""", "'", "\", """, "'", "<", ">", "&", "<", ">");
               $replace = array("\"", "'", "\\", "\"", "'", "<", ">", "&", "<", ">");
               $input = str_replace($search,$replace, $input);
               $geshi = new GeSHi($input, $matches[1][$i]);
               //$geshi -> enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 10);
               $text=preg_replace("#\[code=(.*?)\](.*?)\[/code\]#si",'$2',$text);
               $text=str_replace($matches[2][$i], html_entity_decode($geshi->parse_code()), $text);
       }
       return $text;   
}

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...