Schrift
[thread]11349[/thread]

Problem mit RegEx in php



<< |< 1 2 >| >> 11 Einträge, 2 Seiten
Tom
 2008-02-22 17:50
#106261 #106261
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

Ich habe in meinem Forum ein Script dass mir zu bestimmten Begriffen eine Erklärung als Tooltip anzeigt, jetzt ist es so wenn das Wort Teil eines anderen Wortes ist, wird die Erklärung auch angezeigt, oder wenn das Wort in (url)(/url) steht dann wird der Teil bis zum dem Begriff als Link angezeigt und der Rest nicht mehr, ich hätte das gern so dass es bei Begriffen die in Beschreibungen von Links enthalten sind es keine Erklärung gibt.

Hier könnt Ihr euch das mal anschauen -> Klick

Und hier der Code der das ganze acht.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function acronym_pass($message)
{
static $orig, $repl;

if( !isset($orig) )
{
global $db, $board_config;
$orig = $repl = array();

$sql = 'SELECT * FROM ' . ACRONYMS_TABLE;
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't obtain acronyms data", "", __LINE__, __FILE__, $sql);
}

$acronyms = $db->sql_fetchrowset($result);

if( count($acronyms) )
{
usort( $acronyms, 'acronym_sort' );
}

for ($i = 0; $i < count($acronyms); $i++)
{
$orig[] = '#\b(' . phpbb_preg_quote( $acronyms[$i]['acronym'], "/") . ')\b# i';
$descrip =$acronyms[$i]["description"];
$acrony = htmlentities($acronyms[$i]["acronym"], ENT_QUOTES);
$repl[] = "<a class=acro href=\"lexikon.php?suchwort=". $acrony ."&suchen=1\" onmouseover=\"return overlib('". $descrip ."', STICKY, CAPTION, '". $acrony ."');\" onmouseout=\"return nd();\">" . $acrony . "</a>";
}
}

if( count( $orig ) )
{
$segments = preg_split( '#(<a class=acro href=\"lexikon.php?suchwort=.+?>.+?</a>|<.+?>)#si' , $message, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

$message = '';

foreach( $segments as $seg )
{
if( $seg[0] != '<' && $seg[0] != '[' )
{
$message .= str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#eis', "preg_replace(\$orig, \$repl, '\\0')", '>' . $seg . '<'), 1, -1));
}
else
{
$message .= $seg;
}
}
}

return $message;
}


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
renee
 2008-02-22 18:02
#106263 #106263
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ohne jetzt Deinen Code genauer angeschaut zu haben: Warum nimmst Du nicht eine Klasse, die für BBCode gemacht wurde wie z.B. http://www.christian-seiler.de/projekte/php/bbcode...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Tom
 2008-02-22 18:30
#106266 #106266
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
renee+2008-02-22 17:02:11--
Ohne jetzt Deinen Code genauer angeschaut zu haben: Warum nimmst Du nicht eine Klasse, die für BBCode gemacht wurde wie z.B. http://www.christian-seiler.de/projekte/php/bbcode...


Ich weiß ehrlich nicht was ich mit dieser Klasse dann anstellen soll, hab davon zu wenig Ahnung.

Das ganze war so in einem Mod drin, habe auf phpbb.de auch schon gefragt aber da konnte/wollte mir niemand helfen.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Tom
 2008-02-26 22:47
#106388 #106388
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Kann denn keiner etwas dazu sagen?

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Tom
 2008-03-03 18:21
#106590 #106590
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Kann mir vielleicht jemand wenigstens diesen Teil erklären?

Code: (dl )
$message .= str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#eis', "preg_replace(\$orig, \$repl, '\\0')", '>' . $seg . '<'), 1, -1));


Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Gast Gast
 2008-03-03 18:36
#106591 #106591
Ich würde einen XML-Parser verwenden. Die Regexe sind nur bedingt fehlerunproblematisch.

http://pear.php.net/package/XML_HTMLSax
http://pear.php.net/package/XML_Parser
Tom
 2008-03-03 19:18
#106592 #106592
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Gast+2008-03-03 17:36:55--
Ich würde einen XML-Parser verwenden. Die Regexe sind nur bedingt fehlerunproblematisch.

http://pear.php.net/package/XML_HTMLSax
http://pear.php.net/package/XML_Parser



Aber da muss es sich doch um XML-Daten handeln oder nicht?

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
Gast Gast
 2008-03-03 20:19
#106595 #106595
HTML ist auch XML ;)

Du verwendest doch HTML und liest doch deine HTML-Seite ein, oder?
Tom
 2008-03-03 20:23
#106596 #106596
User since
2003-09-20
470 Artikel
BenutzerIn
[Homepage] [default_avatar]
Gast+2008-03-03 19:19:55--
HTML ist auch XML ;)

Du verwendest doch HTML und liest doch deine HTML-Seite ein, oder?


Ich verarbeite damit die Beiträge aus einem phpbb-Forum die in der Datenbank stehen.

Tom
Computerprobleme??? -> http://www.weber-computerhilfe.de

Fordere keine Anerkennung!
Zeige was und man wird Dich kennen
GwenDragon
 2008-03-03 20:48
#106598 #106598
User since
2005-01-17
14533 Artikel
Admin1
[Homepage]
user image
Die stehen mit BBCode oder HTML in der Datenbank drin?
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-02-22 17:50.