Ergebnis 1 bis 14 von 14
  1. #1
    Avatar von antiheld2000
    antiheld2000 ist offline Lebende Foren-Legende
    registriert
    02-05-2001
    Beiträge
    1.525

    [php] string im string und die teilstrings

    moinsen.
    ich versuche gerade innerhalb eines strings einen string zu suchen und mir dann den gesuchten string inklusive 50 zeichen davor und 50 zeichen dahinterausgeben zu lassen.
    aber irgendwie hakt da mal wieder was in meiner birne.
    jemand nen gedanken anstoss für mich? vor allem was die zeichen vor dem gesuchten string angeht

  2. #2
    Avatar von .marc
    .marc ist offline Lebende Foren-Legende
    registriert
    26-12-2002
    Ort
    Schweiz / Biel
    Beiträge
    1.589
    so? holt jetzt die 5 zeichen links und rechts davon.
    PHP-Code:
    preg_match("(.{0,5}marc.{0,5})","test_____marc_____test"$matches);

    echo 
    $matches[0]; 
    Shit doesn't happen, it's produced by an asshole.
    brain-dump.org || Marc Tanner's web log

  3. #3
    Avatar von antiheld2000
    antiheld2000 ist offline Lebende Foren-Legende
    registriert
    02-05-2001
    Beiträge
    1.525
    man mag mir die frage verzeihen (ich bezeichne mich immer noch gerne als php-newbie):
    wenn ich folgendes schreibe
    PHP-Code:
                if (eregi($suchwort,$text)){
                    
    preg_match ("(.{50}$suchwort.{50})",$text$matches); 
                    echo 
    $matches[0]."<br><br>";
                
    $i++;
                } 
    dann haut er mir bein echo matches nur 2 statt 30 gesamten treffern raus. woran liegt denn das?!

  4. #4
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501
    vermutlich daran, daß es nur 3 Stellen gibt, bei denen exakt / mindestens 50 Zeichen davor und danach auftreten... sind es nur 49, dann ist es kein Treffer
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  5. #5
    Avatar von antiheld2000
    antiheld2000 ist offline Lebende Foren-Legende
    registriert
    02-05-2001
    Beiträge
    1.525
    hm, das ist wohl ein guter einwand... f**k und was nu?

  6. #6
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501
    naja wie .marc schon angedeutet hat: 0,50 bedeutet 0-50 Zeichen... wenn es keine 50 Zeichen gibt, oder der String gleich am Anfang steht, dann gibt das trotzdem einen Treffer. Denn wo nix ist, kann man ja schlecht 50 Zeichen dazudefinieren...
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  7. #7
    Avatar von antiheld2000
    antiheld2000 ist offline Lebende Foren-Legende
    registriert
    02-05-2001
    Beiträge
    1.525
    zack und wieder ist mein IQ um 0.1 punkt gestiegen. was ihn auch noch mal um 1 bis zwei punkte steigen lassen würde wäre die beantwortung folgender frage:

    was will mir diese notice sagen:
    Notice: Undefined offset: 0 in D:\3w\http://www.dieurlsolltehiereigentlic...en.de\preg.php on line 34

    [edit= damit meint er die matches[0] sache
    Geändert von antiheld2000 (15-04-2004 um 16:21 Uhr)

  8. #8
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501
    wenn preg_match 0 (= nicht gefunden) zurückgibt, ist das Result-Array natürlich nicht exisitent / leer / undefiniert oder noch auf dem alten Stand vom letzten Aufruf....
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  9. #9
    digleu ist offline Kaiser
    registriert
    06-10-2001
    Beiträge
    1.063
    folglich würde ich das
    PHP-Code:
    echo $matches[0]."<br><br>"
    durch das
    PHP-Code:
    if (isset($matches[0])) echo $matches[0]."<br><br>"
    ersetzen

    mfg Lars

  10. #10
    Avatar von antiheld2000
    antiheld2000 ist offline Lebende Foren-Legende
    registriert
    02-05-2001
    Beiträge
    1.525
    ich versteh ja so gar nix von regular expressions.... und
    PHP-Code:
    preg_match ("(.{0,50}$suchwortGross.{0,50})",$text$matches); 
    und er sacht mir "Delimiter must not be alphanumeric or backslash"
    was muss ich denn da bloss ändern ?!?!

  11. #11
    digleu ist offline Kaiser
    registriert
    06-10-2001
    Beiträge
    1.063
    habe nicht wirklich ne Ahnung von regex aber ich glaube da muss so ein delimiter hin ... also irgendwie sowas:
    "/(.{0,50}$suchwortGross.{0,50})$/"
    aber es kann auch sein, dass das $ für was anderes gedacht ist oder, dass ich totalen Mist verzapfe ...
    mfg Lars

  12. #12
    Avatar von rasputin
    rasputin ist offline Lounge-Member
    registriert
    31-10-2001
    Beiträge
    3.102
    das dollarzeichen steht für das ende des strings.
    zum problem:
    1. die funktion preg_match ist hier nicht geeignet. verwende preg_match_all
    2. wenn im suchstring regexzeichen vorkommen, funktioniert der ausdruck unter umständen nicht mehr. also vorher alle regexzeichen escapen.
    PHP-Code:
    preg_match_all("/(.{0,50}".preg_quote($suchwortGross"/").".{0,50})/",$text$matches); 
    Geändert von rasputin (16-04-2004 um 13:51 Uhr)

  13. #13
    digleu ist offline Kaiser
    registriert
    06-10-2001
    Beiträge
    1.063
    wenn das $ doch jetzt für das Ende eines Strings steht warum hast dus jetzt nicht gemacht ?

  14. #14
    Avatar von rasputin
    rasputin ist offline Lounge-Member
    registriert
    31-10-2001
    Beiträge
    3.102
    Original geschrieben von digleu
    wenn das $ doch jetzt für das Ende eines Strings steht warum hast dus jetzt nicht gemacht ?
    ich will ja nicht nur den letzten treffer finden...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •