Comparaion de string en php

Fermé
Guillaume Simon - 10 janv. 2003 à 10:31
 Guillaume - 10 janv. 2003 à 15:45
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
10 janv. 2003 à 10:37
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
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
10 janv. 2003 à 11:08
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
10 janv. 2003 à 11:11
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
10 janv. 2003 à 11:22
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
10 janv. 2003 à 11:25
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
10 janv. 2003 à 11:32
Cherche un peu avant ! :o))))
C'est pas bien dur...

Kalamit,
Je ponce donc j'essuie
0
$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
10 janv. 2003 à 11:56
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
10 janv. 2003 à 11:58
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
<?

$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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
10 janv. 2003 à 13:53
: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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
10 janv. 2003 à 13:56
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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
10 janv. 2003 à 13:57
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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504 > Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
10 janv. 2003 à 14:45
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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013
10 janv. 2003 à 15:14
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
10 janv. 2003 à 13:10
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
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
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
10 janv. 2003 à 14:01
$test = ereg (....,....);
echo "$test";

Ca te retourne rien, ca ?

Kalamit,
Je ponce donc j'essuie
0
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
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
10 janv. 2003 à 15:13
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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504
10 janv. 2003 à 15:29
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
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
10 janv. 2003 à 15:15
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
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
10 janv. 2003 à 15:28
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
10 janv. 2003 à 15:31
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 jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 504 > Utilisateur anonyme
10 janv. 2003 à 15:42
Oui, envoie.

-= Bobinours - http://bobin.underlands.org =-
0
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