Thread Problem mit RegEx in php (10 answers)
Opened by Tom at 2008-02-22 17:50

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

View full thread Problem mit RegEx in php