PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   in Array Semikolon finden finden (http://www.selfphp.de/forum/showthread.php?t=7208)

shewolf 18.03.2004 09:15:30

in Array Semikolon finden finden
 
hallo!
ich suche eine funktion mit der ich in einem Array nach Semikolons suchen kann.
mit in_array hab ichs probiert : Fehler Wrong datatype for second argument
also für den suchbegriff
PHP-Code:

$search=";";
if(
in_array($search,$ar_work[$k][$x])){
echo
"Es wurde eine Semikolon gefunden, welches durch - ersetzt wurde.";
$ar_change= array(";" => "-");
$ar_work[$k][$x]= strtr($ar_work[$k][$x],$ar_change); 

Vielleicht muss ich auch nur den Ausdruck fü das Semikolon anders schreiben?

Marilu 18.03.2004 09:58:39

Ich vermute, $ar_work[$k][$x] ist kein Array, sondern ein Array-Eintrag. Dann mußt Du $ar_work[$k] angeben.

shewolf 18.03.2004 10:08:34

in einer while schleife rufe ich vorher alle einträge des Arrays ab in einer weiteren for schleife begrenze ich dies auf bestimmte einträge
PHP-Code:

while(list($k,$v)=each($ar_work)){
    for(
$x=0;$x<2;$x++){
        
$ar_work[$k][$x]=nl2br($ar_work[$k][$x]);//Zeilenumbrüche
        
$ar_work[$k][$x]=htmlspecialchars($ar_work[$k][$x]);//Sonderzeichen
        
$suchzeichen=";";
        if(
in_array($suchzeichen,$ar_work[$k][$x])){
        echo
"Es wurde eine Semikolon gefunden, welches durch - ersetzt wurde.";
        
$ar_change= array(";" => "-");
        
$ar_work[$k][$x]= strtr($ar_work[$k][$x],$ar_change);
        }
    } 

So siehts aus
der String im array den ich durchsiuchen will liegt aber in $ar_work[$k][$x]?
Also muss ich das angeben sonst wird ja nicht der richtige Array-Eintrag durchsucht

Marilu 18.03.2004 11:02:18

Wenn die Fehlermeldung in dieser Zeile kommt:

if(in_array($suchzeichen,$ar_work[$k][$x])){

dann ist $ar_work[$k][$x] kein Array, sondern ein String. Die Funktion in_array() verlangt aber als 2. Argument ein Array.

Versuche es mal so:
if(stristr($ar_work[$k][$x], ";")){
str_replace(";", "-", $ar_work[$k][$x]);

feuervogel 18.03.2004 11:05:03

du sagst selbst, dass ein array-eintrag durchsucht wird...wieso benutzt du dann in_array() ??? du suchst doch im prinzip nicht in einem array sondern in einem string...

die fehlermeldung

Wrong datatype for second argument

sagt doch genau das.

und zwar nicht für den suchbegriff, sondern für das, worin du suchst...dein suchbegriff ist ja das semikolon...

wie wärs mit str_replace dann werden einfach alle semikolons automatisch ersetzt...

shewolf 18.03.2004 11:35:43

Oh ja das hat mir schon ein wenig weiter geholfen.
zumindest kann ich jetzt die if-Abfrage starten
ABER: er erkennt jeden Array-Eintrag egal ob Semikolon enthalten oder nicht
Gebe ich als needle einen Buchstaben ein der tasächlich nicht vorhanden ist, so wird die if-Abfrage richtig ausgeführt, nämlich nicht(false)
also liegt es am semikolon? Der Ausdruck ";" scheint nicht korrekt zu sein?

Marilu 18.03.2004 12:19:09

Du kannst bei stristr() als needle den ASCII-Wert des Suchzeichens angeben. Versuchs doch mal damit.

shewolf 18.03.2004 13:06:57

@Marilu:
Ah ja danke
klingt logisch
und steht ja auch in der Funktionsreferenz ;) (wer lesen kann..)

So ich hab das mal probiert
PHP-Code:

$search=108;
if(
stristr($ar_work[$k][$x],$search)){
  
$ar_change= array(";" => "-");
  
$ar_work[$k][$x]= strtr($ar_work[$k][$x],$ar_change);
  echo
"Ein Semikolon wurde gefunden und entfernt";


Natürlich ist 108 keine Semikolon
Wenn ich nun 059 für Semikolon einstelle findet er aber nix!
Warum nur?
Wäre nett wenns auch dafür ne Lösung gäbe
Danke

shewolf 18.03.2004 13:13:42

@feuervogel

ja ist schon klar ich hab mich falsch ausgedrückt,Und bin vorher falsch an die aufgabe heran gegangen.

ich brauche erst eine Suchabfrage um dann später eine Meldung heraus zu geben falls Semikolon gefunden wurde
deshalb such ich erst nach einer funktion mit der ich abfragen kann ob vorhanden? und dann lösche oder ändere ich und gebe eine Meldung aus

shewolf 18.03.2004 13:38:34

Mein Fehler die ASCII Tabelle die ich gefunden habe ist nicht korrekt!


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

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.