Comparaion de string en php

Guillaume Simon -  
 Guillaume -
J'aimerais comparer deux chaines de caractères pour savoir si la première contient un bout de la deuxième .. Je m'explique

J'ai la première chaine qui ressemble à ca :

Infos/technique/OS/Windows/Windows 98/

La deuxième ressemble à ca :

Windows 98

J'aimerais simplement savoir comment tester que le "Windows 98" est bien contenu dans la première chaine ?

Merci d'avance
A voir également:

13 réponses

Utilisateur anonyme
 
Salut,
c'est faisable avec la fonction reguliere standard ereg()

$test = ereg ( "Infos/technique/OS/Windows/Windows 98/ ","Windows 98 ")

Dans ce cas la, $test = true.

Tu auras plus d'infos ici: http://www.php.net/manual/fr/function.ereg.php

Il existe un paquet de fonction pour manipuler les chaines, ereg en est une.
A+ !

Kalamit,
Je ponce donc j'essuie
0
Guillaume
 
Merci beaucoup ..

Bon maintenant qu'on est lancé .. encore une petite question .. j'aimerais sortir le nom du répertoire ou le fichier est posé ..

J'ai réussi à avoir le chemin complet sur le disque mais j'aimerais juste le nom du répertoire (".") ... Merci
0
Utilisateur anonyme
 
Re-

getcwd() te retourne le dossier courant. Je sais pas si c'est ce que tu cherches...
http://www.php.net/manual/fr/function.getcwd.php
A+!

Kalamit,
Je ponce donc j'essuie
0
Guillaume Simon
 
La commande me retourne tout le chemin .. moi je veux juste le nom du répertoire ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Bah après il te suffit de découper la chaine à partir du dernier "\" que tu trouves...
Faisable avec explode(), http://www.php.net/manual/fr/function.explode.php
J'ai pas trouver de fonction qui te renvoie le nom du repertoire courant...

Kalamit,
Je ponce donc j'essuie
0
Guillaume Simon
 
Bon vu que j'ai qqn qui m'écrit mon code .. j'ose encore te poser une question ... j'ai pas trop envie de réfléchir un max .. comment je fais pour prendre le dernier morceaux de mon url .. style que le nom du répertoire .. Est qu'on peut directement avoir accès à la derniere case du tableau créé par explode() ?

Merci encore
0
Utilisateur anonyme
 
Cherche un peu avant ! :o))))
C'est pas bien dur...

Kalamit,
Je ponce donc j'essuie
0
Guillaume
 
$champs = explode ("\", $Dir);

Il comprends rien PHP a cause du \ ... Comment lui dire qu'il doit quand meme travailler avec ce caractère ?

Fait un str_replace ? Il fait aussi une erreur ...
0
Utilisateur anonyme
 
Heu, ca veut dire quoi, "il comprends rien PHP" ? C'est quoi ton erreur ? J'ai rien pour tester, la...

Kalamit,
Je ponce donc j'essuie
0
Guillaume > Utilisateur anonyme
 
Parse error: parse error, unexpected T_VARIABLE in c:\program files\easyphp\www\simnet\pages\administration\technique\os\windows\listedir.php on line 17

Simplement quand je fais :

$champs = explode ("\", $Dir);

Dès que je met le "\", il fait une erreur car il le prends comme caractères spécial ...
0
Guillaume
 
<?

$Dir = getcwd();
$Dir = htmlspecialchars($Dir);

$Dir = str_replace("\\", "/", $Dir);

$champs = explode ("/", $Dir);
echo "$Dir";
$boucle=0;
while ($boucle < sizeof($champs)-1) {

$boucle++;
}

?>

C'est tout bon
0
Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention   504
 
:oD

Je crois pouvoir dire que c'est inutile ;-)

$champs = explode ("\\", $Dir);

Ceci suffisait.

-= Bobinours - http://bobin.underlands.org =-
0
Guillaume > Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement

J'ai essayé 30000 fonctions dans ce truc et certains font des trucs à doubles ..
On va faire de l'ordre :-)
0
Utilisateur anonyme > Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention  
 
C'est vrai que c'est tordu et pas top optimisé... Mais si ca marche... :o)

Kalamit,
Je ponce donc j'essuie
0
Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention   504 > Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention  
 
Au fait, as-tu compris pourquoi il fallait mettre \\ au lieu de \ ?

-= Bobinours - http://bobin.underlands.org =-
0
Utilisateur anonyme > Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention  
 
Bah je dirais que c'est un caractere reservé... C'est comme en C qd tu veux mettre des quotes dans une chaine de caracteres, tu en mets deux de suite...
Enfin, je crois...

Kalamit,
Je ponce donc j'essuie
0
Utilisateur anonyme
 
Et ca marche nickel ? Tout va bien alors !
N'hesites pas si tu as d'autres problemes. Je peux t'aiguiller te mettre sur la voie, mais j'evite de te donner des réponses toutes faites... Tu ne progresserais pas. (Et je suis en vacances la semaine prochaine :o)) )

Kalamit,
Je ponce donc j'essuie
0
Guillaume
 
Je viens de programmer un BackOffice complet en PHP avec gestion d'arborescence etc ... C'est un énorme projet et malheureusement certaines fonctions ne sont pas encore dans ma tete .. heureusement que certains forums comme celui-ci existe avec des réponses précises et pertinentes ...
0
Guillaume
 
Si qqn a encore une solution ..

ma fonction ereg ne retourne ni true ni false .. elle ne retourne rien et ne fait pas d'erreur .. Je pige vraiment rien
0
Utilisateur anonyme > Guillaume
 
$test = ereg (....,....);
echo "$test";

Ca te retourne rien, ca ?

Kalamit,
Je ponce donc j'essuie
0
Guillaume
 
Je m'étais planté .. j'avais inversé les deux string .. ca marche maintenant .. enfin :-) .. Enfin me reste toute la gestion derrière à programmer mais le gros ca marche ..
0
Guillaume
 
Bobinours .. C'est à cause que l'antislash est caractères fonctionnel sous php non ?

Et encore une kestion .. voici mon code :

$rep=opendir($dossiercours);
$compteur=0;
while ($file = readdir($rep)) {
if($file != '..' && $file !='.' && $file !=''){
if (is_dir($file)){
$compteur++;

if ($compteur%3!=0):
{
?>

<td width="33%" height="30" valign="top">
<table border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3" height="37">
<tr>
<td width="101%" bgcolor="#482B7F" height="13">
<p align="center"><b><font face="Verdana" size="1" color="#FFFFFF">
<?echo("$file");?></font></b></td>
</tr>

<?

include "connectbd.php";
$sql = "select * from ".$prefixe."_dossiers order by nomdossier";
$resultat = mysql_query($sql);
while($ligne = mysql_fetch_array($resultat)){
$id_dossier = $ligne["id_dossier"];
$nomdossier = $ligne["nomdossier"];
$descriptiondossier = $ligne["descriptiondossier"];
$liendossier = $ligne["liendossier"];
$test = eregi("$file",$liendossier);
if ($test == "1"):
{
?>
<tr>
<td height="12"><font face="Verdana" size="1"> -<?echo("<a \"text-decoration: none\" href=%22index.php?Page=administration/$liendossier//"> $nomdossier");?></font></td>
</tr>
<?
}
endif;
}
?>


Sur l'opendir, il me fait aucune erreur, ce qui veut dire qu'il arrive bien à ouvrir le dossier .. ensuite je lui demande de me lister les répertoires et de me les afficher dans un tableau .. mais rien n'apparait .. si je place le code dans le répertoire en cours et que je fais opendir('.'); ca marche .. mais j'aimerais faire un opendir d'un dossier distant et lister son contenu ...
0
Utilisateur anonyme
 
Qu'est ce qu'il y a comme valeur dans ta variable $dossiercours ? Tu dois mettre le path de ton repertoire depuis la racine du site. (enfin il me semble...)

Kalamit,
Je ponce donc j'essuie
0
Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention   504
 
Euh... Je sais pas comment ça se fait que tu n'aies pas d'erreur, parce que dans ton code il n'y a presque aucune fermeture d'accolade ouvrante...

-= Bobinours - http://bobin.underlands.org =-
0
Guillaume
 
Voila qu'il me sort un dossier maintenant .. serait-ce une kestion de droit ? J'ai XP et j'arrive pas à modifier les droits sur les fichiers ... Vous avez une idée ?!?!
0
Utilisateur anonyme
 
Il y aurait un probleme de droit si tu ecrivais quelque chose, mais comme tu ne fais que lire... Ca doit pas etre ca...
A mon avis, la valeur passée à Opendir n'est pas bonne...

Kalamit,
Je ponce donc j'essuie
0
Guillaume
 
Pages/administration/technique/OS/Windows/

Quand je mets ca il devrait me sortir les dossiers que j'ai dans le répertoire Windows mais non il sort rien du tout ..

tandis que :

Pages/administration/

Il me sort un dossier "images" qui est bien et bel existant mais le dossier administration contient 6 autres dossiers qui ne sortent pas .. Je comprends vraiment rien ...
0
Utilisateur anonyme > Guillaume
 
C'est un peu galere, j'ai rien pour tester. Tu es pas trop loin de la solution, je vais regarder ton code en détail.

Kalamit,
Je ponce donc j'essuie
0
Guillaume > Utilisateur anonyme
 
Veux tu le code en entier ? Parce que la il n'est que partiel ..

C'est d'ailleurs pour ca qu'il n'y a pas toutes les accolades qui sont fermées. . mon code est parfaitement juste et fonctionne .. il y a un problème au niveau de la variable dossiercours et de la fonction opendir ...
0
Bobinours Messages postés 2898 Date d'inscription   Statut Membre Dernière intervention   504 > Utilisateur anonyme
 
Oui, envoie.

-= Bobinours - http://bobin.underlands.org =-
0
Guillaume
 
Voila le fichier listedir.php avec la déclaration de variable au début .. avant j'utilisais pas de variable et je mettais "." pour le dossier ca marchait .. Maintenant quand je rentre un dossier, ca marche desfois à moitié ...

-----------SIMNET SA WEB SOURCE WWW.SIMNETSA.CH---------

<html>

<head>

</head>

<body>
<?


//SOURCE DU PROBLEME EST ICI
$dossiercours = "../Windows";

$Dir = htmlspecialchars($dossiercours);

$Dir = str_replace("\\", "/", $Dir);

$champs = explode ("/", $Dir);

$boucle=0;
while ($boucle < sizeof($champs)-1) {

$boucle++;
}
$lienrel = $champs[$boucle];
$champs[$boucle] = ucfirst( strtolower($champs[$boucle]) ) ;
?>

<div align="center">
<center>
<table border="0" cellpadding="3" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="84%" id="AutoNumber1">
<tr>
<td width="164">
<p align="left">
<img border="0" src="images/Dossier_Petit.jpg" width="125" height="68"></td>
<td width="76%" valign="bottom"><b>
<font face="Verdana" size="5" color="#000080"><?echo $champs[$boucle];?></font></b></td>
</tr>
<tr>
<td width="100%" colspan="2" style="border-left-width: 1; border-right-width: 1; border-top: 1px solid #000080; border-bottom-width: 1"> </td>
</tr>
</table>
</center>
</div>
<p> </p>
<div align="center">
<center>
<table border="0" cellpadding="3" cellspacing="3" style="border-collapse: collapse" bordercolor="#111111" width="85%" id="AutoNumber1" height="98">
<tr>
<td width="33%" height="30" valign="top">
<table border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111" width="101%" id="AutoNumber2" height="36">
<tr>
<td width="101%" bgcolor="#482B7F" height="13">
<p align="center"><b><font face="Verdana" size="1" color="#FFFFFF">
<?echo $champs[$boucle];?> (Général)</font></b></td>
</tr>

<?
include "connectbd.php";
$sql = "select * from ".$prefixe."_dossiers order by nomdossier";
$resultat = mysql_query($sql);
while($ligne = mysql_fetch_array($resultat)){
$id_dossier = $ligne["id_dossier"];
$nomdossier = $ligne["nomdossier"];
$descriptiondossier = $ligne["descriptiondossier"];
$liendossier = $ligne["liendossier"];

$champs2 = explode ("/", $liendossier);

$boucle2=0;
while ($boucle2 < sizeof($champs2)-1)
{
$boucle2++;
}

$lien = $lienrel."/".$champs2[$boucle2];


$test = eregi("$lien",$liendossier);
if ($test == "1"):
{
?>
<tr>
<td height="12"><font face="Verdana" size="1"> -<?echo("<a style=\"text-decoration: none\" href=%22index.php?Page=administration/$liendossier//"> $nomdossier");?></font></td>
</tr>
<?
}
endif;
}
?>

</table>
</td>

<?
$rep=opendir($dossiercours);
$compteur=0;
while ($file = readdir($rep)) {
if($file != '..' && $file !='.' && $file !=''){
if (is_dir($file)){
$compteur++;


if ($compteur%3!=0):
{
?>

<td width="33%" height="30" valign="top">
<table border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3" height="37">
<tr>
<td width="101%" bgcolor="#482B7F" height="13">
<p align="center"><b><font face="Verdana" size="1" color="#FFFFFF">
<?echo("$file");?></font></b></td>
</tr>

<?

include "connectbd.php";
$sql = "select * from ".$prefixe."_dossiers order by nomdossier";
$resultat = mysql_query($sql);
while($ligne = mysql_fetch_array($resultat)){
$id_dossier = $ligne["id_dossier"];
$nomdossier = $ligne["nomdossier"];
$descriptiondossier = $ligne["descriptiondossier"];
$liendossier = $ligne["liendossier"];
$test = eregi("$file",$liendossier);
if ($test == "1"):
{
?>
<tr>
<td height="12"><font face="Verdana" size="1"> -<?echo("<a style=\"text-decoration: none\" href=%22index.php?Page=administration/$liendossier//"> $nomdossier");?></font></td>
</tr>
<?
}
endif;
}
?>
</table>
</td>

<?
}
else:
{
?>

</tr>
<tr>
<td width="33%" height="30" valign="top">
<table border="1" cellpadding="0" style="border-collapse: collapse" bordercolor="#111111" width="101%" id="AutoNumber5" height="36">
<tr>
<td width="101%" bgcolor="#482B7F" height="13">
<p align="center"><b><font face="Verdana" size="1" color="#FFFFFF">
<?echo("$file");?></font></b></td>
</tr>
<?

include "connectbd.php";
$sql = "select * from ".$prefixe."_dossiers order by nomdossier";
$resultat = mysql_query($sql);
while($ligne = mysql_fetch_array($resultat)){
$id_dossier = $ligne["id_dossier"];
$nomdossier = $ligne["nomdossier"];
$descriptiondossier = $ligne["descriptiondossier"];
$liendossier = $ligne["liendossier"];
$test = eregi("$file",$liendossier);
if ($test == "1"):
{
?>
<tr>
<td height="12"><font face="Verdana" size="1"> -<?echo("<a style=\"text-decoration: none\" href=%22index.php?Page=administration/$liendossier//"> $nomdossier");?></font></td>
</tr>
<?
}
endif;
}
?>

</table>
</td>
<?
}
endif;


}
}
}
closedir($rep);
clearstatcache();
?>


<td width="33%" height="30" valign="top"> </td>
</tr>
</table>
</center>
</div>


</body>

</html>

-----SIMNET SA AUTORISE LA MODIFICATION ET REPRISE------
0