开发者

How do I modify a string printed by a script?

开发者 https://www.devze.com 2023-02-04 07:52 出处:网络
I\'m having problems with wordpress mishandling accented characters, or maybe t开发者_开发知识库he problem is with some plugin. Whichever the case I need to \"translate\" some strings, removing accent

I'm having problems with wordpress mishandling accented characters, or maybe t开发者_开发知识库he problem is with some plugin. Whichever the case I need to "translate" some strings, removing accents which i do with:

  $value = strtr($value, $trans);

I really need to change this string which renders the user's location but it's printed with a script so I have no idea how to do it:

<script language="javascript"> document.write('' + geoip_city() +''); </script>

Is there a way to assign it's result to a php value beforehand or something? Maybe removing the accents with a script. I really need to modify it, how could I manage to do it? Thanks


The only way I could see this happening is by using output buffering, see

http://php.net/manual/en/function.ob-start.php

and

http://www.php.net/manual/en/function.ob-get-clean.php

Though if at all possible I would avoid using this, it's not exactly best practice. See if the function in question takes any arguments to return the data rather than print it and otherwise duplicate the function and make the changes you need to it.


What is the codepage of the page with the script and what is the codepage of the string returned? If your page has a

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" /> 

and the data is utf8 then change to

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

or vice-versa

If you need to do it on the client you can do

a)

<script language="javascript">
var x =  geoip_city(); 
</script>

and use a script like this one

b) if you cannot access the script but CAN add a script yourself:

var oldWrite = document.write;
document.write = function(str) {  
    var newString = "";
    // your code to convert here
    oldWrite(newString); 
}


I would suggest trying to take the string output of the "geoip_city()" and do your search and replace there.

Using your example code:

<script language="javascript"> document.write('' + geoip_city().toString().replace('searchStr', 'replaceStr') + ''); </script>

More information about string methods can be found on Microsoft's JScript or Mozilla's MDC pages: http://msdn.microsoft.com/en-us/library/t0kbytzc(v=vs.85).aspx

Can't link to more than one page, but if you do a Google search for replace MDC, you'll find it.

0

精彩评论

暂无评论...
验证码 换一张
取 消