Autor Zpráva
Joseph7
Profil *
zdravim

ako pomocou regex_replace prehodim slovoA za slovoB oddelene vzdy @ (okolo @ je medzera z lavej aj pravej strany)

z tohoto
slovoA @ slovoB

chcem toto
slovoB @ slovoA
Kcko
Profil
Joseph7:
http://www.phpliveregex.com/p/6R
Joker
Profil
Joseph7:
No… Definujete funkci regex_replace, která to udělá.
I když teda regex_replace je velmi nevhodné jméno, když nechcete nahrazovat v řetězci a použít na tohle regulární výrazy je nesmysl.

Mohlo by to vypadat nějak takhle:
/* Prohodí navzájem dvě části textu oddělené separátorem. 
    Když v textu separátor není, vrátí původní text. 
*/
function prohodit($separator, $text) 
{
  $casti = explode($separator, $text, 2);
  return (count($casti > 1)) ? ($casti[1] . $separator . $casti[0]) : $text;
}
peta
Profil
$str = str_replace(" slovoA @ slovoB "," slovoB @ slovoA ",$str);
www.php.net/function.str_replace - nebo jiny priklad z dokumentace
regex_replace se v novem php pozazuje za zastarale, nahrazuje se preg_replace.
Joseph7
Profil *
diky a nevies ako by to malo vyzerat v php smarty?

regex_replace:'(regularny vyraz sucasny)':'(regularny vyraz ktory chcem)'
donny
Profil
regex_replace má rovnaký syntax pre "pattern" ako preg_replace, preto si myslím že si v podstate dostal odpoveď od Kcka, teraz už si len správne doplniť jeho pattern do funkcie!

Preg replace tam vyzeralo takto..
preg_replace("/([^@]+) @ (.+)/", "", $input_lines);

PS1: nabudúce by bolo fajn upresniť že sa jedná o modifikator premenných v smarty, pretože nie každý pracuje zo smarty..
PS2: http://www.smarty.net/docs/en/language.modifier.regex.replace.tpl, v samotnom manuály to oporúčajú robiť radšej v php, podobne ako ti radili Joker, alebo Peta
Joseph7
Profil *
takze asi takto
regex_replace:'/([^@]+) @ (.+)/':'$2 - $1'

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: