Problem mit preg_match

Funktioniert leider nicht, das selbe Ergebnis wie vorher !
Andere alternativen ? Vl. ne komplett andere Abfrage ?
 
was soll ich sagen:confused:
Das hier funktioniert bei mir...und bei dir?:
PHP:
<?php
$synonyms = 
array(
    array(
        'syn'=>'ESD',
        'syn_description'=>'Beschreibung für ESD'
        ),
    array(
        'syn'=>'eSD',
        'syn_description'=>'Beschreibung für eSD'
        ),
    array(
        'syn'=>'SD',
        'syn_description'=>'Beschreibung für SD'
        )
);

function check_synonyms($text)
{
 global $synonyms;
 while($synonym = current($synonyms))
  {
   if(preg_match("/\b{$synonym['syn']}\b/",$text)) 
    {
     $desc = "[acronym=\"".$synonym['syn']."\"]".$synonym['syn_description']."[/acronym]";
     $text = preg_replace("/\b{$synonym['syn']}\b/", $desc, $text);
    }
   next($synonyms);
  }
 return $text;
}

if(isset($_GET['text']))echo check_synonyms($_GET['text']).'<hr>';
?>


<form action="<?php echo $_SERVER['PHP_SELF'];?>">
<input size="80"name="text"><input type="submit">
</form>
...und das ist abgesehen davon, dass die Daten nicht aus ner DB kommen, dasselbe.
 
PhoenixDH hat gesagt.:
Hab das jetzt so eingebaut:
Code:
function check_synonyms($text)
{

	global $pref;
	
	$r_synonym = thwb_query("SELECT syn, syn_description FROM $pref"."synonyms ORDER BY syn ASC");
	if( mysql_num_rows($r_synonym) != 0 )
	{
		while( $synonym = mysql_fetch_array($r_synonym) )
		{
			if (preg_match("/\b$synonym[syn]\b/",$text)) 
			{
			$desc = "[acronym=\"".$synonym[syn]."\"]".$synonym[syn_description]."[/acronym]";
			$text = preg_replace("/\b$synonym[syn]\b/", $desc, $text);
			}
		}
	}

	return $text;
}

Das mit den Unterschieden wie eSD, ESD und SD funktioniert, aber leider wird jetzt noch zusätzlich nach jedem Wort ein leeres Acronym Tag eingeführt, sieht so aus:
Code:
[acronym=""][/acronym]Ich[acronym=""][/acronym] [acronym=""][/acronym]bin[acronym=""][/acronym] [acronym=""][/acronym]eine[acronym=""][/acronym] [acronym=""][/acronym]eSD[acronym=""][/acronym], [acronym=""][/acronym]ESD[acronym=""][/acronym], [acronym=""][/acronym]SD[acronym=""][/acronym] ! [acronym=""][/acronym]oder[acronym=""][/acronym] [acronym=""][/acronym]ABS[acronym=""][/acronym] [acronym=""][/acronym]oder[acronym=""][/acronym] [acronym=""][/acronym]LuFi[acronym=""][/acronym] [acronym=""][/acronym]Oder[acronym=""][/acronym] [acronym=""][/acronym]auch[acronym=""][/acronym] [acronym=""][/acronym]ein[acronym=""][/acronym] [acronym=""][/acronym]trhrthtrhtrzverfldg[acronym=""][/acronym]

Woran liegt das jetzt plötzlich ?

Hi

Mach aus dem
while( $synonym = mysql_fetch_array($r_synonym) )
mal ein
while( $synonym == mysql_fetch_array($r_synonym) )

Sonst setzt Du die Variable $synonym und dieser Vorgang wird mit TRUE als erfolgreich zurückgegeben, wodurch jedes Wort als gefunden erkannt wird.

MfG
Posti
 
Probier mal Folgendes:
PHP:
<?php

	function check_synonyms($string)
	{

		global $pref;
		$query = "
			SELECT
			        `syn`,
			        `syn_description`
			  FROM
			        `".$pref."synonyms`
			";
		$result = thwb_query($query);
		if( mysql_num_rows($result) != 0 ) {
			while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
				$replacement = '[acronym="'.$row['syn_description'].'"]'.$row['syn'].'[/acronym]';
				$string = preg_replace('/\b'.$row['syn'].'\b/', $replacement, $string);
			}
		}
		return $string;

	}

?>
 
@Sven: Könntest du mir das ganze für ne DB Abfrage umschreiben, das scheint wirklich zu funktionieren ! Denn ich komme mit dem next nicht zurecht ! Kann dir auch mal die DB Daten geben damit du es richtig testen kannst !

Sobald ich das auf DB umgestellt habe macht er wieder das gleiche wie vorher mit den leeren Tags, kann man das irgendwie son ein Array einlkesen wie du das manuell gemacht hast ?

@Post: Nach der Änderung hat er überhaupt nix gemacht !

@Gumbo: Auch keine Änderungen !
 
Zuletzt bearbeitet:
Ich habe jetzt mal deinen Code genommen...mit ner DB, und da entstehen keine "leeren" Tags.
Was macht eigentlich thwb_query() bei dir ?
 
Das ist die boardspezifische Query einfach !

Ich schick dir mal per PM meine DB Daten !

Hm, vielleicht liegt das daran das ich das lokal teste, kann ich mir aber nicht voirstellen !
 
Zuletzt bearbeitet:
PhoenixDH hat gesagt.:
@Sven: Könntest du mir das ganze für ne DB Abfrage umschreiben, das scheint wirklich zu funktionieren ! Denn ich komme mit dem next nicht zurecht ! Kann dir auch mal die DB Daten geben damit du es richtig testen kannst !

Sobald ich das auf DB umgestellt habe macht er wieder das gleiche wie vorher mit den leeren Tags, kann man das irgendwie son ein Array einlkesen wie du das manuell gemacht hast ?

@Post: Nach der Änderung hat er überhaupt nix gemacht !

@Gumbo: Auch keine Änderungen !

AAhh .. sorry, hatte wohl Tomaten auf den Augen ...
Deine While-Zeile ist mit einem = voll ok, da Du ja solange die Schleife durchlaufen möchtest, wie es neue Datensätze gibt (und dabei jedesmal den Datensatz in die Variable schiebst).
KA, was mich da geritten hat ... sorry.

MfG
Posti
 
Mir ist da noch was aufgefallen, Sachen in denen ein Punkt drin ist akzeptiert er nicht, wieso das ? Geht das auch das er es akzeptiert ?

Bsp.: Diff-Sp. / Bj.

Danke für eure Hilfe !
 
Zurück