php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 26-11-2006, 18:32
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Question Problem mit Teilstring aus RegEx

Hi Leute,

habe da ein Problem mit nem Teilstring aus nem RegEx.
Ich will aus einem Regulären Ausdruck den 7 Teil nehmen und ihn in meine Funktion packen um dort zu checken ob der Wert kleiner 50 ist und dann je nach Fall den String wieder zurückgebe oder verändert zurückgebe (z.B. min. 55).

PHP-Code:
$suchmuster20 '/(position:)([^\{]*)(absolute)([^\}]*)(top:)([\s]*)([\d]{1,2})(px)/s';

$pimpfeld_string preg_replace($suchmuster20top_check('$1''$2''$3''$4''$5''$6''$7''$8''$0'), $pimpfeld_string);
} else
    {
    echo 
"Nichts machen!!!"
    }

echo 
$pimpfeld_string;

///////////////////////////////////////////////////////////////////////////////////////////////
function top_check($sm_part1$sm_part2$sm_part3$sm_part4$sm_part5$sm_part6$sm_zahl$sm_einheit$sm_komplett)
{
    
    
//echo $sm_zahl;
    //$sm_zahl = intval($sm_zahl);
    
if($sm_zahl 50)
    {
    
$fixed_style '<50:::'.$sm_zahl.':::'.$sm_part1 .$sm_part2 .$sm_part3 .$sm_part4 .'top:55px';
    }
    else
     {
     
$fixed_style '>50:::'.$sm_komplett;
     }
return 
$fixed_style;

Nu kann aber die Überprüfung ob der $7 Wert kleiner 50 ist nicht richtig erfolgen weil das ja ein string ist.
Wenn da also 30 drin steht und ich dann mit

PHP-Code:
$sm_zahl intval($sm_zahl); 
rangehe und das ganze mit dem return zurück kommt wird bei der Ausgabe nur 0 angezeigt.

Wo klemmt es da nur ?

Wäre toll wenn jemand von euch ne Idee hätte.

Danke vorab.

Ciao CF
Mit Zitat antworten
  #2 (permalink)  
Alt 27-11-2006, 01:13
fiderallalla
 Junior Member
Links : Onlinestatus : fiderallalla ist offline
Registriert seit: Jul 2003
Ort: Mönchengladbach
Beiträge: 70
fiderallalla ist zur Zeit noch ein unbeschriebenes Blatt
fiderallalla eine Nachricht über ICQ schicken
Standard

Hi,

intval gibt 0 zurück u. A. wenn seine Typenumwandlung erfolglos war.
Ich persönlich verwende gerne $string+=0;

Ich habe gerade nichts zum testen hier und muss aus dem Gedächtnis kramen, aber wenn Du an 7. Stelle eine Zahl suchst stimmt IMHO Dein Pattern nicht, da müsste [\d]{1,2} stehen wenn Du eine zweistellige zahl suchst. Momentan suchst Du nach 1 oder 2 "d", da das "d" in einer Zeichenklasse definiert ist.
Außerdem ist das 7. Ergebnis Match $6, da bei $0 angefangen wird zu zählen. Somit übergibst Du deiner Funktion 9 Argumente, obwohl Dein Pattern nur 8 auffängt.

Gruß,

Hans
Mit Zitat antworten
  #3 (permalink)  
Alt 27-11-2006, 11:41
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi Hans,

danke für die Antwort.
Da ist irgendwie beim Text einfügen das ([\d]{1,2}) verändert worden - steht bei mir im Code schon mit \d da.
Was deine Aussage mit $1 und $0 angeht, muss ich dir leider wiedersprechen.
$1 ist der erste (Teil ) des RegEx.
$0 ist der ganze RegEx, also $1.....$n

Die Reihenfolge kanns nicht sein, denn $7 ist in der function ja $sm_zahl und die wird bei nach übergabe aus der Funktion korrekt ausgegeben. Nur in der Funktion kommt da nur 0 an oder $7 ist doch komisch.

Wo liegt da bloss der Hund begraben ?
Kann doch nicht viel sein.

@Hans: Schonmal thanx

Ciao CF
Mit Zitat antworten
  #4 (permalink)  
Alt 27-11-2006, 15:32
fiderallalla
 Junior Member
Links : Onlinestatus : fiderallalla ist offline
Registriert seit: Jul 2003
Ort: Mönchengladbach
Beiträge: 70
fiderallalla ist zur Zeit noch ein unbeschriebenes Blatt
fiderallalla eine Nachricht über ICQ schicken
Standard

Zitat:
Was deine Aussage mit $1 und $0 angeht, muss ich dir leider wiedersprechen.
Ja, Du hast vollkommen recht - sorry!!!

Möglicherweise wird das Callback nicht korrekt angesprochen, versuch doch mal als 2. Argument (man beachte die ->")
"topcheck($1,$2,$3, usw... )"

HTH,

Hans
Mit Zitat antworten
  #5 (permalink)  
Alt 27-11-2006, 19:18
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Question

Hab das mal so umgebaut dann lief es auf dem localhost, aber auf dem Server wo es hin soll plötzlich wieder diese Fehlermeldung:

Warning: preg_replace_callback() [function.preg-replace-callback]: requires argument 2, 'top_check', to be a valid callback in...

PHP-Code:
if(stristr($pimpfeld_string'position') && stristr($pimpfeld_string'absolute') && stristr($pimpfeld_string'top'))
{
$suchmuster20 '/(position:)([^\{]*)(absolute)([^\}]*)(top:)([^0-9]*)([\d]{1,2})(px)/si';
$pimpfeld_string preg_replace_callback($suchmuster20'top_check'$pimpfeld_string);
}
///////////////////////////////////////////////////////////////////////////////////////////////
function top_check($match)
{
    
$sm_zahl $match[7];
    
$sm_zahl intval($sm_zahl);
    if(
$sm_zahl 50)
    {
    
$fixed_style '<50:::'.$sm_zahl.':::'.$match[1] .$match[2].$match[3].$match[4].'top:55px';
    }
    else
     {
    
$fixed_style '>50:::'.$sm_zahl.':::'.$match[1] .$match[2].$match[3].$match[4].$match[5].$match[7].'px';
     }
return 
$fixed_style;

Kannst mal bitte die genauen Syntax für meinen Anwendungsfall schreiben ?

Die Beispiele auf php.net zur preg_replace_callback sind ja total wustig und haben durch die Bank böse Syntax-Fehler :-(

Vielleicht hab ihr das ja schon gemacht mit der preg_replace_callback und so nem Anwendungsfall.

Besten Dank vorab für Hilfe.

Ciao CF
Mit Zitat antworten
  #6 (permalink)  
Alt 27-11-2006, 21:37
fiderallalla
 Junior Member
Links : Onlinestatus : fiderallalla ist offline
Registriert seit: Jul 2003
Ort: Mönchengladbach
Beiträge: 70
fiderallalla ist zur Zeit noch ein unbeschriebenes Blatt
fiderallalla eine Nachricht über ICQ schicken
Standard

nee, ich meinte:
PHP-Code:
$pimpfeld_string preg_replace($suchmuster20"topcheck($1,$2,$3,$4,$5,$6,$7,$8)"$pimpfeld_string); 
den $0 lass mal weg
Mit Zitat antworten
  #7 (permalink)  
Alt 28-11-2006, 12:37
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Question

Ne also da is ja nen Sytnax Fehler. So geht das leider net. Und warum preg_replace brauche doch nen callback.

Ich habs so:

PHP-Code:
$pimpfeld_string preg_replace_callback($suchmuster20'top_check'$pimpfeld_string); 
auf meinem localhost mit PHP 5.1.6-5 zum laufen gebracht, aber auf dem Server wo es hin soll mit PHP 5.1.6 kommt folgende Fehlermeldung:

Warning: preg_replace_callback() [function.preg-replace-callback]: requires argument 2, 'top_check', to be a valid callback in /.../www/htdocs/...index.php on line 750
750 ist die Codestelle die hier in diesem Beitrag steht.

Ist doch komisch, woran kann das liegen ?

Ciao CF
Mit Zitat antworten
  #8 (permalink)  
Alt 28-11-2006, 13:02
fiderallalla
 Junior Member
Links : Onlinestatus : fiderallalla ist offline
Registriert seit: Jul 2003
Ort: Mönchengladbach
Beiträge: 70
fiderallalla ist zur Zeit noch ein unbeschriebenes Blatt
fiderallalla eine Nachricht über ICQ schicken
Standard

1) stimmt der Name der Funktion die Du aufrufen willst _genau_ mit dem Namen des Callbacks überein?

2) Hast Du meine Codezeile ausprobiert?
Mit Zitat antworten
  #9 (permalink)  
Alt 28-11-2006, 13:05
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Captain Future
Ist doch komisch, woran kann das liegen ?
du kannst ja mal versuchen, die callback-funktion vor dem aufruf von preg_match_callback zu definieren.
Mit Zitat antworten
  #10 (permalink)  
Alt 28-11-2006, 19:36
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Question

@fiderallalla:
Zu 1. ja
Zu 2. ja ist aber von der Syntax her nicht gegangen.
Aber erstmal Danke.

@3DMax
Zitat:
du kannst ja mal versuchen, die callback-funktion vor dem aufruf von preg_match_callback zu definieren.
Wie meinste das denn genau ?

@all
Habe folgendes festgestellt:
Unter PHP Version 5.1.6-5 kommt der Fehler
Unter PHP 5.1.6 läuft es und
unter PHP 5.2.0 läufts auch.

Kann dann ja eigentlich nur ein Bug sein oder ?

Habe im Netz auch über diverse Bugs der Funktion in Versionen vor 5.1.6 gelesen.

P.S.: Die Doku auf php.net zu preg_replace_callback ist ziemlich schlecht und die Beispiel oft voller Syntax-Fehler.
Mit Zitat antworten
  #11 (permalink)  
Alt 29-11-2006, 00:47
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Captain Future
Wie meinste das denn genau ?
achso, preg_replace_callback meine ich natürlich.
ansonsten: function top_check($match){...} mal vor $pimpfeld_string = preg_replace_callback($suchmuster20, 'top_check', $pimpfeld_string); schreiben.
die reihenfolge sollte eigentlich egal sein, aber du hast ja den fehler, dass die funktion unbekannt ist.

und von welchen syntax-fehlern in der doku sprichst du?
Mit Zitat antworten
  #12 (permalink)  
Alt 29-11-2006, 18:44
Captain Future
 Newbie
Links : Onlinestatus : Captain Future ist offline
Registriert seit: Nov 2006
Beiträge: 6
Captain Future ist zur Zeit noch ein unbeschriebenes Blatt
Cool

Hi Leute,

vielen Dank nochmal an Alle. :-)

Wie gesagt unter 5.1.6 und 5.2.0 läuft es, war wohl ein Bug von 5.1.6-5.

@3DMax
Die sind doch überall.
Da brauchst Du dir nur mal 2 oder 3 Funktionen raussuchen und die Beispiele dazu durchgehen die da gepostet sind. Das meiste ist mit Fehlern gesähnt. Naja kann halt nur besser werden.
Aber sonst ist php.net ne gute Seite :-)

Ciao CF
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:51 Uhr.