Thomas: Anzeigen ob in einer Funktion etwas geändert wurde oder nicht

Ich habe eine Funktion die unerlaubte Buchstaben aus meinem String entfernt.

function ueberpruefen ($var,$format)  
{  
	if 	($format=='name'){$neu=preg_replace ( '~[^a-z0-9/> ÜüÖöÄäß,.:_-]~i', '',$var );} 		// Name  
	  
return $neu;  
}  

Dieses klappt, aber ich würde noch gerne eine weitere Ausgabe mit einbinden:
Und zwar soll eine neue Variable ausgegeben werden in der steht ob der getestete String geändert wurde, oder nicht.

Also wenn nicht war dann soll

$ok = false

mit ausgegeben werden, wenn alles ok war, dann

$ok = true

Kann mir da jemand helfen?

Thomas

  1. Om nah hoo pez nyeetz, Thomas!

    Und zwar soll eine neue Variable ausgegeben werden in der steht ob der getestete String geändert wurde, oder nicht.

    wenn du den ursprünglichen Text speicherst und ihn hinteher mit dem neuen vergleichst, kannst deine Funktion das gewünschte leisten.

    Matthias

    --
    1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
    1. Hi,

      Und zwar soll eine neue Variable ausgegeben werden in der steht ob der getestete String geändert wurde, oder nicht.
      wenn du den ursprünglichen Text speicherst und ihn hinteher mit dem neuen vergleichst, kannst deine Funktion das gewünschte leisten.

      Ganz so einfach ist es nicht, denn die Funktion kann ja nur einen einzigen Wert zurückgeben, ein
      return name, changed;
      geht nicht.

      Man kann aber z.B. ein Array (oder eine andere Objektstruktur) zurückgeben, das den ggf. geänderten String und das Änderungsflag enthält.
      Es müssen dann halt auch alle Aufrufstellen angepaßt werden ...

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
      1. High!

        ... oder man übergibt den String als Referenz, dann hat man den Rückgabewert frei...

        ... oder man gibt den geänderten String zurück, _wenn_ er geändert wurde, ansonsten einfach false... Wofür den String zurückgeben, wenn er der gleiche wie das Original ist?

        Und es ist ja nicht so, dass PHP in diesem Sinne stur und unflexibel wäre ;-)

        Gruß

        1. Hi,

          ... oder man gibt den geänderten String zurück, _wenn_ er geändert wurde, ansonsten einfach false... Wofür den String zurückgeben, wenn er der gleiche wie das Original ist?

          Das macht sich im Handling an der aufrufenden Stelle aber äußerst unschön.

          MfG ChrisB

          --
          RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi,

    function ueberpruefen ($var,$format)

    {
    if ($format=='name'){$neu=preg_replace ( '~[^a-z0-9/> ÜüÖöÄäß,.:_-]~i', '',$var );} // Name

      
    Aus André wird damit Andr. Ist das wirklich gewünscht?  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
    
    
    1. Hi!

      Aus André wird damit Andr. Ist das wirklich gewünscht?

      Zu klären wäre, ob es aus technischen oder aus sozialen Gründen eingeschränkt werden soll. Für soziale Zwecke ist solch eine Einschränkung in der Regel nicht besonders effektiv, weil sich immer irgendwas finden lässt, das durch das Muster passt aber trotzdem nicht erwünscht ist.

      Lo!

    2. Hi,

      function ueberpruefen ($var,$format)

      {
      if ($format=='name'){$neu=preg_replace ( '~[^a-z0-9/> ÜüÖöÄäß,.:_-]~i', '',$var );} // Name

      
      >   
      > Aus André wird damit Andr. Ist das wirklich gewünscht?  
      
      Jetzt einmal eine ganz dumme Frage.  
      André wird doch angenommen, da er doch nicht den ´ sondern den ' ausschließt, oder sehe ich das nicht und der Koffeein wirkt noch nicht?  
      
      
      1. Moin,

        if 	($format=='name'){$neu=preg\_replace ( '~[^a-z0-9/> ÜüÖöÄäß,.:\_-]~i', '',$var );} »» »» Aus André wird damit Andr. Ist das wirklich gewünscht?  
        

        Jetzt einmal eine ganz dumme Frage.

        hmmm ...

        André wird doch angenommen, da er doch nicht den ´ sondern den ' ausschließt

        Thomas schließt alle Zeichen aus, die in der Zeichenklasse nicht aufgeführt sind. Also auch das é. Oder das â. Oder das ñ.

        oder sehe ich das nicht und der Koffeein wirkt noch nicht?

        Trink noch 'ne Tasse Kaffee, mach ich auch gerade. ;-)

        Ciao,
         Martin

        --
        Man soll den Tag nicht vor dem Abend loben.
        Und den Mann nicht vor dem Morgen.
          (alte Volksweisheit)
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Hi!

        if 	($format=='name'){$neu=preg\_replace ( '~[^a-z0-9/> ÜüÖöÄäß,.:\_-]~i', '',$var );} 		// Name  
        

        Aus André wird damit Andr. Ist das wirklich gewünscht?
        André wird doch angenommen, da er doch nicht den ´ sondern den ' ausschließt, oder sehe ich das nicht und der Koffeein wirkt noch nicht?

        é ist nicht ´ und e. Auch wenn du das auf deiner Tastatur mit zwei Tastendrucks eingibst, landet im Text nur ein Buchstabe. Nebenbei ist das ' ebensowenig wie das ´ im Suchmuster enthalten. Und selbst wenn du auf die kombinierenden diakritischen Zeichen abzielst: der mit der Tastatur eingegebene ´ ist das Zeichen U+00B4 und der kombinierende ist U+0301.

        Lo!