Autor Zpráva
Houbar Luky
Profil *
Už asi 3 hodiny se pokouším změnit:
$filter[1] = preg_replace("/\"/i","\\\"",$filter[1]);
ani za boha mi to nejde. Prosím co s tím? Když to změním na
$filter[1] = str_replace("/\"/i","\\\"",$filter[1]);
tak to taky nejde. Ach jo...
Alphard
Profil
str_replace() nebere reguláry. Proč se to snažíte změnit, jesti preg_replace() funguje?
Houbar Luky
Profil *
Původně to bylo takto:
$filter[1] = preg_replace("/\"/i","\\\"",$filter[1]);
$script .= "message = message.replace(/$filter[0]/gi,\"$filter[1]\");\r\ n";
}

return $script;
}

// This returns all of a certain type of filter
function get_filter_by_type($type){
$return = array();
foreach($this->filter_array as $noneed=>$filter){
// Add it to the output if it's the correct type
if($filter[2] == $type){
$filter[1] = eregi_replace("\\\\\"","",$filter[1]);
$return[] = $filter;


Ale po přechodu na novej webhosting mě to nefunguje: nejsou podporované zastaralé funkce.
Tak jsem to změnil takto a to nefunguje:
$filter[1] = preg_replace("/\"/i","\\\"",$filter[1]);
$script .= "message = message.replace(/$filter[0]/gi,\"$filter[1]\");\r\ n";
}

return $script;
}

// This returns all of a certain type of filter
function get_filter_by_type($type){
$return = array();
foreach($this->filter_array as $noneed=>$filter){
// Add it to the output if it's the correct type
if($filter[2] == $type){
$filter[1] = str_replace("\\\\\"","",$filter[1]);
$return[] = $filter;
Alphard
Profil
Zavržená je pouze skupina ereg*, preg* nechte být.
Houbar Luky
Profil *
Alphard:
Ale mě to nefunguje


Chyba je tady:
$filter[1] = eregi_replace("\\\\\"","",$filter[1]);
jak to mám změnit?
peta
Profil
eregi_replace("\\\\\"","",$filter[1]); modifikator i
"\\\\\""
lomitko, lomitko, uvozovka
Ale ted si nejsem uplne jisty, jestli ti to mohlo fungovat, protoze tam neni pocatecni a koncovy znak reg. vyrazu. Ja ho tam vzdy davam.

eregi_replace("\\\\\"","",$filter[1]);
preg_replace("\\\\\"","",$filter[1]);
preg_replace("~\\\\\"~i","",$filter[1]);
preg_replace("\\\\\"","",$filter[1]);
Nevim, proc tam mas eregi, kdyz tam zadny pismenkovy znak, kde by melo smysl rozlisovat velka a mala pismenka, nemas.
Si myslim, ze spravne by melo byt spis jedno z techto reseni:
str_replace("\\\\\"","",$filter[1]);
preg_replace("~\\\\\"~","",$filter[1]);
str_replace("\"","",$filter[1]);
preg_replace("~\"~","",$filter[1]);
str_replace('"',"",$filter[1]);
preg_replace('~"~',"",$filter[1]);


preg_replace("/\"/i","\\\"",$filter[1]);
"/\"/i"
zacatek + uvozovka + konec + modifikator i
Ten vyraz se s prvnim neshoduje. Takze nemuzes ocekavat stejne vysledky.

Jak se pisi reg. vyrazy a modifikatory?
http://cz1.php.net/preg-replace
http://cz1.php.net/manual/en/reference.pcre.pattern.modifiers.php
zacatek
Jan Tvrdík
Profil
peta:
Nejsem si jist, jestli z tvého výkladu bude Houbar Luky moc moudrý :)

protoze tam neni pocatecni a koncovy znak reg. vyrazu.
U ereg* funkcí delimitery nepíší.

Houbar Luky:
Výraz $filter[1] = eregi_replace("\\\\\"","",$filter[1]); můžeš nahradit pomocí str_replace za

$filter[1] = str_replace("\\\"", "", $filter[1]);
peta
Profil
Jen jsem chtel rici, ze pro ereg i preg musi mit ten vyraz stejny, "\\\\\"". Pro str mu staci "\\\"" nebo '"' a nebo '\\"'. A je mozne, ze jsem to netrefil, ze ten tvuj vyraz je konecne ten ok :) Tezko rici. On musi napsat, ktere znaky hleda reg vyrazem.
Jan Tvrdík
Profil
peta:
Píšeš nesmysli. Jdi si dát studenou sprchu.

pro ereg i preg musi mit ten vyraz stejny
To není pravda ani obecně ani v tomhle konkrétním případě, protože preg* funkce vyžadují uvedení delimiterů.

Pro str mu staci "\\\"" nebo '"' a nebo '\\"'.
Stačí uvést jednu správnou možnost, netřeba uvádět ty nesprávné.

On musi napsat, ktere znaky hleda reg vyrazem.
On jednoznačně uvedl, kterou funkci chce nahradit. Nic víc není potřeba specifikovat.
SeparateSK
Profil
$text="Uvodzovky: \"";
$text=str_replace("\"","\\\"",$text);
echo $text; //Uvodzovky: \"
" -> \"

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: