Autor Zpráva
Stepanka
Profil *
Ahoj,

prosím neporadil by mi někdo s jedním problémem?

Mám nějaký takovýto předmět, který se vkládá do e-mailu:
např.:
[Další projekt 0000059]: Shrnutí
[Jiný projekt 0000123]: ProjektXY
[úplně jiný 0000012]: Další úkoly

Obecný tvar by byl asi takovýto: [COKOLIV CISLO]: COKOLIV

A já bych potřebovala dostat z toho předmětu ven jen to číslo. Z prvního příkladu jen "59", z druhého jen "123" atd..

Nevěděl by, prosím, někdo, jak na to?

Mockrát děkuju.
keeehi
Profil *
$a = "[Další projekt 0000059]: Shrnutí";
echo $a."<br>";
$a = ltrim(substr($a,strpos($a, "]")-7,7),"0");
echo $a;

platí to je pokud těch čísel před "]" je 7, pokud je to jinak, změň sedmičky
Stepanka
Profil *
keeehi
Mockrát děkuju, funguje to pěkně..

Akorát tu mám ještě podobný problém:

Mám tenhle text (v nějaké proměnné):

Projekt: Další projekt
ID problému: 59
Kategorie:
Vyvolání: vždy
Důležitost: malá
Priorita: normální
Stav: přiřazený
Dohodnutá částka řešiteli: 600
Konečná cena (Kč): 510
Odhadovaná cena (Kč):
Odhadovaná pracnost (hod):
Odpracovaný čas (hod):
Předpokládané datum vyřešení: 2008-11-11
Proplaceno zákazníkem: NE
Zaplaceno řešiteli: NE 


Jde o ten zvýrazněný řádek. Může tam být uvedená hodnota (třeba těch 600), ale taky tam být nic nemusí (stejně jako o dva řádky níž).

A já bych potřebovala udělat, aby se ta hodnota (pokud tam je uvedená) nezobrazila. Aby se zobrazila jen dvojtečka a prázdné místo.

Nepomohl bys mi, prosím, ještě s tímto? Byla bych moc vděčná. Já na ty práce s řetězci moc nejsem.
Sicario
Profil *
Chces tedy odstranit na kazdem radku znaky za : az do konce radku? Myslim, ze resenim jsou regularni vyrazy.
$out = preg_replace('/:.*$/', ':', $in);
Stepanka
Profil *
Sicario
Jo, ale ne na každém, jen na tom, který začíná "Dohodnutá částka řešiteli:"
keeehi
Profil *
Todle bude asi ono
$a = "Projekt: Další projekt
ID problému: 59
Kategorie:
Vyvolání: vždy
Důležitost: malá
Priorita: normální
Stav: přiřazený
Dohodnutá částka řešiteli: 600
Konečná cena (Kč): 510
Odhadovaná cena (Kč):
Odhadovaná pracnost (hod):
Odpracovaný čas (hod):
Předpokládané datum vyřešení: 2008-11-11
Proplaceno zákazníkem: NE
Zaplaceno řešiteli: NE ";
echo $a."\n\n";
$aexplod = explode("\n", $a);
$aexplod[7] = "Dohodnutá částka řešiteli:";
$a = implode("\n", $aexplod);
echo $a;
keeehi
Profil *
echa jsou jen pro kontrolu, nemusí tam být
Stepanka
Profil *
keeehi
Mockrát děkuju za nápad, ale nejsem si jistá s tím $aexplod[7] =. Možná by se mohlo stát, že ty řádky budou v tom e-mailu uspořádány jinak. Pak mi to třeba změní řádek, který změnit nechci.

Asi by to bylo lepší spíš pomocí preg_replace, jak radil Sicario, tak to ještě zkouším s tím..
nightfish
Profil
Stepanka
$data = "Projekt: Další projekt
ID problému: 59
Dohodnutá částka řešiteli: 600
Konečná cena (Kč): 510
Odhadovaná cena (Kč):";
$data = preg_replace("/(Dohodnutá částka řešiteli:)\s+\d+/", "$1", $data);
keeehi
Profil *
Tak že to byl email jsem nevěděl, nikde jsem si toho nevšiml, proto jsem předpokládal, že je to třeba získáno z databáze.
Stepanka
Profil *
nightfish
Děkuju, takhle je to úplně skvělé :-)

keeehi
Moje vina, nenapsala jsem to. I tak mockrát díky.
Stepanka
Profil *
Teda ještě detail...

V tom emailu se mi generuje třeba i řádek
2008-10-28 20:44karel novotny90Dohodnutá částka řešiteli600 => 750        
2008-10-28 20:45robert sobota90Report přidán: 0000157 


A tady už to řešení nefunguje.. Zkusila jsem to Tvoje doplnit takhle:

$t_message = preg_replace("/(Dohodnutá částka řešiteli:)\s+\d+/", "$1", $t_message);
$t_message = preg_replace("/(Dohodnutá částka řešiteli)\s+\d+/", "$1", $t_message);


Ale nemůžu vygooglovat, co znamená to \s+\d+/, je asi potřeba to nějak upravit, protože ty horní řádky to v tom emailu zobrazuje pořád :-(
Potřebovala bych tam zase zobrazit třeba jen toto:
2008-10-28 20:44karel novotny90Dohodnutá částka řešiteli =>


Help please.. Naposled, slibuju..
keeehi
Profil *
v regulérních výrazech se moc nevyznám, ale něco jsem našel v knížkách:
\s+: vyhovují řeťězce obsahující alespoň jeden prázdný znak
\d: vyhovují řetězce obsahující alespoň jednu číslici
Stepanka
Profil *
keeehi

Aha, super, to mi moc pomohlo. Zkusila jsem $t_message = preg_replace("/(Dohodnutá částka řešiteli)\d+/", "$1", $t_message); a funguje. Děkuju!
keeehi
Profil *
není zač

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: