Thanks for the added data, Spunk. I guess I should have asked for a view of the 
screen/echo conversation too...

I'm not strong on RegExps so took a look at the manual 
(http://www.php.net/manual/en/function.ereg-replace.php),
which says:
-----
string ereg_replace (string pattern, string replacement, string string)
This function scans string for matches to pattern, then replaces the matched text with 
replacement.
The modified string is returned. (Which may mean that the original string is returned 
if there are no matches to
be replaced.)
-----
It seems to answer your question about "strings cf arrays". A string can be a 
character or an array of
characters. An array can contain a list of strings -  and we might thus call it a 
"string array" but that does
not make it A "string".

So it seems to me [medium-high ignorance factor present] that you would definitely 
need to loop the array
through the RegExp an element at a time; and that appears to be exactly what you're 
doing, but once again,
without echo-ing so that you/we can see the data fore-and-aft, it's difficult to spot 
a problem within the
crucial function call (lacking those RegExp skills as I do).

NB in talking about 'pass by reference' I was refering to the function you had 
written, NOT the call to
ereg_replace()!

However [he continuous ponderously] again dipping into the manual
(http://www.php.net/manual/en/function.str-replace.php), we see:
-----
mixed str_replace (mixed search, mixed replace, mixed subject)

This function returns a string or an array with all occurences of search in subject 
replaced with the given
replace value. If you don't need fancy replacing rules, you should always use this 
function instead of
ereg_replace() or preg_replace().

In PHP 4.0.5 and later, every parameter to str_replace() can be an array.

If subject is an array, then the search and replace is performed with every entry of 
subject, and the return
value is an array as well.

If search and replace are arrays, then str_replace() takes a value from each array and 
uses them to do search
and replace on subject. If replace has fewer values than search, then an empty string 
is used for the rest of
replacement values. If search is an array and replace is a string; then this 
replacement string is used for
every value of search. The converse would not make sense, though.
-----
Note the comment about replace cf RegExp - a frequent refrain on this list is the 
improved efficiency for simple
search/replace operations.

I feel sure that the idea of an array-search against an array-replace should come with 
a Surgeon-General's
health warning to protect one's sanity, but this sort of challenge might appeal to you?

Unsought/pedantic advice: try putting a simple string (extracted from your data) 
through the chosen
transformation/function first, then replace the string with a string array element, 
then work up to whole arrays
at a time... It seems so simplistic, but everyone should have a short 'testbench.php' 
script into which code
fragments can be dropped, so that tests can be made on 'new' constructs. Then to use 
this in a process of
gradual 'construction' (ie "make it work (simply) before you make it better"), rather 
than starting from
something complex and having to dismantle/simplify it back down, in order to 
debug/check your logic and
assumptions.

Hope it's helping,
=dn

PS I put this contribution back on the list in case it will help others/provoke a more 
learned response



> Thanks for responding. Odly, my site is down at the moment so I will need
> some time to investigate. Here's what I know so far:
>
> I did debug with echo inside one of my functions and the string was fine
> until it used ereg_replace(). The same thing happens outside of my function
> (in the body of the script, calling ereg_replace($variable);). I tried
> passing the variable to my function as a reference but the same problem
> occurred. I didn't try to pass it as a reference to ereg_replace though...
> but I would guess ereg_replace accepts arguments as reference by default...
> Maybe this is the problem?
>
> I was planning on throwing all the code into one file to see if that worked
> but I have to wait till my server's back up.
>
> The problem seems to stem from passing a variable whose data is from an
> array that through ereg_replace ... should this be a problem? I define the
> variable with the array data in the body of my code... I can't see why this
> would be a problem but I'll check.
>
> Here's an example of my code:
>
> <?php
>
> include("getid3.php");
>
> function RemoveSpaces($stufftoreplace) //My function
> {
>     // Removes spaces and other characters that could cause problems.
>     $stufftoreplace = ereg_replace(" ", "_", "$stufftoreplace");
>     return $stufftoreplace;
> }
>
> $id3info = (getID3("music.mp3"));
> $song = $id3info["TIT2"]["data"];
> $newsong = RemoveSpaces("$song");
> //$newsong = ereg_replace(" ", "_", "$song"); //This also shows problem!
> echo "$newsong"; //string is now empty
>
> Weird... Any thoughts?
>
> Spunk
>
>
> ?>
> >
> > Could you post some excerpted code please?
> >
> > You seem to have multiple issues:
> > 1 communication between a 'mainline' and INCLUDEd code
> > 2 communication between a 'mainline' and a function
> > 3 working with scalars and arrays
> > 4 working with text strings and ?text arrays
> > - which may or may not be related/relevant
> >
> > Let's start with simple ideas:
> > 0 put debug echo statements into the function (or everywhere) to track
> > progress
> > 1 if you take the processing code out of the INCLUDE file and put it in the
> > 'mainline', does it then work as planned?
> > 2 do you have an & to indicate a pass by reference cf a pass by value (see
> > manual)?
> > 3 and 4 does the processing use tools/approach/functions that only work with
> > scalars/arrays/strings?
> > A process of elimination...
> >
> > Keep us posted,
> > =dn
>
>


-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to