kostenloser Webspace werbefrei: lima-city


Hilfe bei regulärem Ausdruck

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    cookies

    Kostenloser Webspace von cookies

    cookies hat kostenlosen Webspace.

    Hi, ich suche einen regulären Ausdruck für preg_replace().
    Er soll alle Leerzeilen (\n) rauslöschen, außer wenn sie innerhalb von 2 " (doppelten Anführungszeichen) oder 2 ' (einfachen Anführungszeichen) sind.

    Ich hoffe, mir kann jemand helfen.

    LG cookies
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ersetz doch zuerst die Anführungszeichen durch einen Platzhalter wie beispielsweise "&anf;" .
    Dann löscht du ganz normal die Leerzeilen und daraufhin ersetzt du die Anführungszeichen wieder durch das ursprüngliche.

    Hoffe, das half dir,
    Nico

    Beitrag zuletzt geändert: 8.4.2010 21:39:20 von nicoa
  4. Autor dieses Themas

    cookies

    Kostenloser Webspace von cookies

    cookies hat kostenlosen Webspace.

    Ich glaub nicht, dass mir das hilft. Hier noch mal zur Erklärung:
    wort1-
    
    wort2 'wort3
    
    wort4' "wort5
    
    wort6"

    soll werden zu
    wort1-wort2 'wort3
    
    wort4' "wort5
    
    wort6"


    LG cookies

    €dit: Ich bin aber grade auf eine Idee gekommen, wenn ich eine Lösung hab, werde ich die hier posten.
    Aber wenn trotzdem noch jemand eine Idee mit preg_replace hat, kann ich die auch gebrauchen.

    €dit 2:
    Ich hab mal ne Funktion geschrieben. Ich denk zwar, dass es nicht die beste Lösung ist, aber für meine Zwecke reicht es erstmal.
    function replaceNLs ($string)
    {
    	$string = trim($string);
    	
    	$y = explode("'", $string);
    	$array = array();
    	foreach ($y as $x)
    	{
    		$array_tmp = explode('"', $x);
    		$array = array_merge($array, $array_tmp);
    	}
    	
    	if (substr($string, 0, 1) == "'" || substr($string, 0, 1) == '"')
    		$in_quotes = true;
    	else
    		$in_quotes = false;
    	
    	$return = null;
    	foreach ($array as $x)
    	{
    		if ($in_quotes)
    			$return .= '\'';
    		if (!$in_quotes)
    		{
    			$x = str_replace("\n", '', $x);
    		};
    		$return .= $x;
    		if ($in_quotes)
    			$return .= '\'';
    		$in_quotes = (!$in_quotes);
    	}
    	return $return;
    }

    Falls aber jemand eine bessere Lösung kennt, bitte posten.

    LG cookies

    Beitrag zuletzt geändert: 8.4.2010 22:28:12 von cookies
  5. eigentlich is das einfach:

    $string = preg_replace("/([^'\"])\n([^'\"])/s", "$1$2", $string);

    sollte hinhauen, allerdings werden da auch solche strukturen beibehalten:

    foo'\n"bar


    Beitrag zuletzt geändert: 12.4.2010 19:26:05 von nemoinho
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!