php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.10.2006, 20:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard gemeinsamer Teilstring ab position 0

Nabend,
kennt jemand zufällig eine Funktion, die von zwei Strings das Teilstück liefert, das beide ab Position 0 gemeinsam haben? Also z.B. (dafür solls auch sein) das gemeinsame Verzeichnis 2er Dateipfade? Klingt irgendwie simpel aber zwischen strncmp und soundex hab ich noch nix passendes gefunden. Bisher helf ich mir mit ner Schleife, da es ja eh keine Suche im eigentlichen Sinn ist. Jemand ne Idee?
nikosch ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 18.10.2006, 21:27  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Funktion kann ich Dir keine liefern.
Aber wie kommst Du auf die Idee, dass ein gemeinsames Präfix zweiter Dateinamen ausgerechnet ein gemeinsames Verzeichnis ergeben?

.\tmp\1234\1.gif und .\tmp\1235\2.gif haben einen gemeinsamen Substring .\tmp\123 am Anfang. Aber ein Verzeichnis ist das nicht.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 18.10.2006, 23:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

nein, das ist klar. ich reduzier das dann noch mit strrpos auf die letzte slashposition
nikosch ist offline  
Alt 18.10.2006, 23:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

explode() am Besten nach dem DIRECTORY_SEPARATOR und vergleich die Teil-Strings dann ganz simpel per ==

PHP-Code:
<?php
$sPath1 
'c:\programme\mozilla firefox\firefox.exe';
$sPath2 'c:\programme\mozilla thunderbird\thunderbird.exe';
$aPath1 explode(DIRECTORY_SEPARATOR$sPath1);
$aPath2 explode(DIRECTORY_SEPARATOR$sPath2);
$sCommonPath '';
for (
$i 0$iMax min(count($aPath1), count($aPath2)); $i $iMax$i++) {
  if (
$aPath1[$i] != $aPath2[$i]) {
    break;
  }
  
$sCommonPath .= $aPath1[$i] . DIRECTORY_SEPARATOR;
}
echo 
'common path for <code>'$sPath1'</code> and <code>'$sPath2'</code> is <code>'$sCommonPath'</code>';
?>
Edit:
Zitat:
Bisher helf ich mir mit ner Schleife
Grad erst gelesen.
Aber wie solls denn auch ohne Schleife gehen?

Edit 2:
Basti, deine "Typbezeichnung in den Variablen"-Schreibweise gefällt mir immer besser. Ich glaub das übernehm ich wirklich, sehr angenehm zu lesen.
Zergling-new ist offline  
Alt 18.10.2006, 23:45  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

stimmt, schleife sagt jetzt nicht wirklich viel. wollte sagen, eine schleife mit zeichenweisem vergleich.
Code:
$iMax = min (strlen ($sRoot) , strlen ($sSelf);
for ($iCnt=0; 
     $iCnt < $iMax) , $sRoot{$iCnt} == $sSelf{$iCnt};
     $iCnt++);
mit array hab ich auch schon überlegt, aber vielleicht ist das mit kanonen auf spatzen schießen. ich brauch ja schließlich wirklich nur alles ab dem ersten character. dafür bin ich mir bei zeichen wieder nicht sicher wg. utf8 usf.
Zitat:
Basti, deine "Typbezeichnung in den Variablen"-Schreibweise gefällt mir immer besser. Ich glaub das übernehm ich wirklich, sehr angenehm zu lesen.
Willkommen im Club
nikosch ist offline  
Alt 19.10.2006, 00:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das Problem (das mir selbst erst aufgefallen ist, als ich den Firefox als Beispiel-Pfad verwenden wollte) ist, dass 2 Pfade ja gleich beginnen könnten ("Mozilla Firefox" und "Mozilla Thunderbird"). Wenn du jetzt zeichenweise vergleichst, hättest du als gemeinsamen Ordner
"c:/programme/mozilla "
Könntest dann prüfen, ob das nächste Zeichen der DIRECTORY_SEPARATOR ist, falls nicht mit substr($bisherigesErgebnis, 0, strrpos(DIRECTORY_SEP)) [pseudocode] den richtigen Pfad extrahieren.
Ist wohl wieder geschmackssache, solang beides mit einem Kommentar versehen ist, was der Codeblock macht, Jacke wie Hose
Zergling-new ist offline  
Alt 19.10.2006, 00:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Nein, viel einfacher. Mozilla Firefox" und "Mozilla Thunderbird" können schon deswegen nicht das gleiche Verzeichnis sein, weil gleiche Verzeichnisse bis inkl. des folgenden Slashs gleich sein müssen. Bei deinem Beispiel schneide ich ja schon alles VOR Mozilla ab.
Bsp:
Code:
c:/programme/mozilla Firefox/...
c:/programme/mozilla Thunderbird/...
                    ^ Unterschied
            ^ gemeinsamer Pfad letztes Slash vor Unreschied
Damit es nicht noch Probleme mit dem Pfad "c:/programme" geben könnte, muß ich als kleine Krücke an beide VZ ein Slash am ende anhängen.

Hab aber als Abendbeschäftigung noch ein bischen Arrayarbeit verrichtet. Auf jeden Fall eleganter als ein zeichenweiser Vergleich:
PHP-Code:
<?
$sPath1 
'C:/dies/ist/ein/beispiel/pfad';
$sPath2 'C:/dies/ist/ein/anderer/pfad';

$aCommon array_intersect_assoc (explode('/' $sPath1) , 
                    
explode('/' $sPath2));
for (
$iCnt ; !empty ($aCommon[$iCnt]) ; $iCnt++); 
echo 
implode ('/' array_slice($aCommon $iCnt));
?>
array_intersect_assoc () hinterläßt an der ersten Nicht-Übereinstimmung eine Lücke, die es dann nur noch zu finden gilt.
nikosch ist offline  
Alt 19.10.2006, 11:39  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Eine Sache ist mir aufgefallen, die du wohl noch irgendwie unterbringen müsstest: Je nach Betriebssystem kann es sein, dass die Pfadangaben nicht case-sensitiv sind. Dieser Fall wird momentan noch nicht berücksichtigt.
xabbuh ist offline  
Alt 19.10.2006, 14:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Danke für den Hinweis. Aber da die behandelten Pfade werden für Includemanagement und dergl. verwendet und da geht ohne exakte Schreibweise eh nix. Also setz ich das voraus.
Aber so eine 'gemeinsamer-String' Funktion gibt es tatsächlich nicht oder?
nikosch ist offline  
Alt 19.10.2006, 19:38  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ich wüßte nicht.

PHP-Code:
<?php
function something($s1$s2)
{
    
$i 0;
    
$s '';

    while(isset(
$s1[$i], $s2[$i]) && $s1[$i] === $s2[$i])
        
$s .= $s1[$i++];

    return 
$s;
}
?>
Ungetestet, müsste aber etwa hinkommen...

Basti
Basti 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
CSS: Style ohne position? SilentSight HTML, Usability und Barrierefreiheit 5 25.07.2008 16:12
[Erledigt] position: fixed; im IE 6 cycap HTML, Usability und Barrierefreiheit 12 24.06.2008 17:16
Position einer zeile in einer sortierten tabelle bestimmen Drache Datenbanken 9 17.06.2007 10:45
Mauszeiger Position (ohne Event) cowabunga1984 HTML, Usability und Barrierefreiheit 4 04.04.2007 12:01
Position eines Strings rausfinden, der mehrmals vorkommt PHP Tipps 2006 5 12.02.2006 19:20
mit position nachruecken imported_kremser Datenbanken 2 08.02.2006 21:50
Position abfragen Datenbanken 5 29.09.2005 16:31
position eines event-handlers HTML, Usability und Barrierefreiheit 0 03.07.2005 14:31
position einer abfrage Datenbanken 7 14.06.2005 20:48
Scrollbar Position auslesen und an Link übergeben... Plague PHP Tipps 2005 6 17.05.2005 16:40
[Erledigt] scroll position bleibt... HTML, Usability und Barrierefreiheit 2 28.04.2005 15:16
Teilstring mit ganzen Wörtern zcmaster Datenbanken 0 02.02.2005 08:00
position des letzten mehrfach-wortes im string finden? janni PHP Tipps 2005 1 09.01.2005 20:22
Position in der Datenbank. PHP-Fortgeschrittene 2 21.11.2004 16:10
Position relative oder absolute Stümper HTML, Usability und Barrierefreiheit 3 12.09.2004 11:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php position von substring in string, gemeinsames verzeichnis für firefox und thunderbird -plattform, auf verzeichnis positionieren php, php string ab position, php ab position, php vergleich teilstring, gemeinsame teilstrings, php string suche ab einer position, php teilstring ab position finden, substring firefox 4, substring count inkl html tags, ersten gemeinsamen zeichen eines strings, php gemeinsame n zeichen von strings bestimmen, php teilstring postion, php teilstring suchen position

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:20 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.