php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.04.2006, 01:51  
Gast
 
Beiträge: n/a
Standard

Falls Dein Problem noch nicht gelöst sein sollte, hilft Dir vielleicht Folgendes
weiter... ;-)

PHP-Code:
<?php

function cToPhpArray($str)
{
    
// escapte Anführungszeichen kodieren
    //   [ >> ]
    
$str strtr($str, array('=' => '=3D'));

    
$pattern '#([^\\\]\\\(?:\\\{2})*)"#S';
    
$replace '\\1=22';
    for (
$prev_str ''$prev_str !== $str; )
    {
        
$prev_str $str;
        
$str      preg_replace($pattern$replace$str);
    }
    
//   [ << ]

    // Ersetzen der C-Array-Syntax durch die von PHP
    //   [ >> ]
    
$pattern '^([^"]*((("[^"]*){2})*)?)\{([^"]*((("[^"]*){2})*)?)\}';
    
$replace '\\1array(\\5)';
    for (
$prev_str ''$prev_str !== $str; )
    {
        
$prev_str $str;
        
$str      ereg_replace($pattern$replace$str);
    }
    
//   [ << ]

    // escapte Anführungszeichen wieder dekodieren
    
$str strtr($str, array('=22' => '"''=3D' => '='));

    return 
$str;
}

?>
Das Ersetzen habe ich hier mal die ereg_replace()-Funktion übernehmen
lassen. Eigentlich sollte man, was reguläre Ausdrücke betrifft, komplett
auf die Perl kompatible Variante (PCRE) setzen, da die POSIX-Alternative
ereg_*() nicht so performant wie diese ist und daher in künftigen PHP-
Versionen (ab PHP 6) per Standard nicht verfügbar sein wird.

Da ich das Pattern gerade aber nicht vernünftig umgeschrieben bekomme
(unter PHP 4 ist meine PCRE-Lösung mehr als 100-fach, unter PHP 5 sogar
gut 1000-fach langsamer ^^), lass ich das ereg_replace() da mal stehen... ;-)

Das entsprechende Perl kompatible Pattern sähe bei mir, wie folgt, aus:

PHP-Code:
<?php
  $pattern 
'#^([^"]*(?:(?:(?:[^"]*"[^"]*){2})*)?)\{' .
               
'([^"]*(?:(?:(?:[^"]*"[^"]*){2})*)?)\}#US';
  
$replace '\\1array(\\2)';
?>
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.04.2006, 16:52  
Benutzer
 
Registriert seit: 28.03.2005
Beiträge: 46
Ryson
Standard

Vielen vielen Dank, karl-150,


für die Lösung und dafür,
dass Du Dich dem Thread gewidmet hast,
obwohl er nicht mehr neu war.
Ich hatte das Thema schon abgehakt.

Das Ergebnis sieht sehr gut aus,
an escapte Anführungszeichen hatte ich gar nicht mehr gedacht.


Gruß, Ryson.
Ryson ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Kategoriedaten rekursiv in Array bringen Schiedsrichter PHP Tipps 2008 2 10.12.2007 15:43
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.