PHP Centeri avaleht Skriptikogu Küsimuste-vastuste leht Teadete vaatamine ja saatmine Foorum - koht küsimiseks Otsingumootor Siit saad infot meie kohta

Kasutajanimi:  
  Parool: 
  Registreeri!   Unustasid salasõna?

Foorumid Programmeerimine PHP & MySQL Ülesanded Stringi Replace
Autor Abi Postitus Abi

kalaants

Postitusi: 21
Tase: 2
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
Stringi Replace

Oletame et tahetakse subtriitrite ajapositsioone muuta.

$nihe=10;
$subtiiter_string="{9029}{9084}Ei, sa ei saa.
{9086}{9175}Ei saa jah.|Sul on õigus.
{9234}{9263}Ah!
{9266}{9308}Nii on juba parem!
{9405}{9436}Aitäh.
{9474}{9513}Seal oli lihtsalt üks rand...
";
Ehk et vastuseks peaks tulema:
$subtiiter_string_vastus="{9039}{9094}Ei, sa ei saa.
{9096}{9185}Ei saa jah.|Sul on õigus.
{9244}{9273}Ah!
{9276}{9318}Nii on juba parem!
{9415}{9446}Aitäh.
{9484}{9523}Seal oli lihtsalt üks rand...
";

Et iga { } täägide vahel olev number saaks liidetud $nihe väärtusega.
Kõige lihtsam oleks seda teha erreg_replacega, ise konstrueerisin igavese pika ja vaevalise joru str_replace-st, str_pos-ist jne.
Oleks meeldiv, kui keegi kribaks siia mingi lihtsama variandi, kuidas antud probleemi lahendada.


11.11.2004 12:11:36 Vajutades siia näed kasutaja kalaants profiili

laurik
_/<

Postitusi: 847
Tase: 8
Olek: Offline

Hinnang: Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10Administratiivhinnang: 10/10
RE: Stringi Replace

PHP kood:

$subtiiter_string="{9029}{9084}Ei, sa ei saa.
{9086}{9175}Ei saa jah.|Sul on õigus.
{9234}{9263}Ah!
{9266}{9308}Nii on juba parem!
{9405}{9436}Aitäh.
{9474}{9513}Seal oli lihtsalt üks rand...
"
;

$nihe 10;
foreach(
explode("\n"$subtiiter_string) as $line)
{
    
preg_match('/\{([0-9]*)\}\{([0-9]*)\}(.*)/'$line$res);
    if(!
count($res)) continue;
    
    echo 
'{'.($res[1]+$nihe).'}{'.($res[2]+$nihe).'}'.$res[3]."\n";
    
#print_r($res);
}



Selliseks tegevuseks on loodud ka spets vahendeid, nt Time Adjuster (kasutusjuhend).

12.11.2004 19:03:58 Vajutades siia näed kasutaja laurik profiili

andresv

Postitusi: 200
Tase: 5
Olek: Offline

Hinnang: Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10Administratiivhinnang: 5/10
RE: Stringi Replace

See peaks olema kõige lühem variant.
PHP kood:


<?php

$subtiiter_string
="{9029}{9084}Ei, sa ei saa.
{9086}{9175}Ei saa jah.|Sul on õigus.
{9234}{9263}Ah!
{9266}{9308}Nii on juba parem!
{9405}{9436}Aitäh.
{9474}{9513}Seal oli lihtsalt üks rand...
"
;

$nihe 10;

$resultaat preg_replace("/{([0-9]+)}/e","'{'.(\\1+$nihe).'}'"$subtiiter_string);

echo 
$resultaat;
?>



tulemus
Koodijupp:

{9039}{9094}Ei, sa ei saa.
{9096}{9185}Ei saa jah.|Sul on õigus.
{9244}{9273}Ah!
{9276}{9318}Nii on juba parem!
{9415}{9446}Aitäh.
{9484}{9523}Seal oli lihtsalt üks rand...



13.12.2004 12:04:59 Vajutades siia näed kasutaja andresv profiili
Kokku: 25949 registreerunud kasutajat, 9711 teemat, 54603 postitust.
Täna on teisipäev, 19. november 2019. Kell on 00:40.

    Vaata selle lehe printerisõbralikku versiooni

Avaleht   -    Skriptikogu   -    Teated   -    Foorum   -    Reklaam   -    Tagasiside   -    Kasutamise reeglid

© Copyright 2002-2019 PHP Center. Kõik õigused reserveeritud.