Split a string into two strings

I have a string that returns pairs of data i.e. (name 1,url1) and there can be multiple pairs.
Sometimes instead of the URL there is an error message. How can I separate the ones with the url form the others into two strings?
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Cornelia YoderArtistCommented:
A good approach would be ....

1.  explode() the string into an array.  The exact code depends on the format of the original string and what separates the actual pairs of name/url/error.

2.  Loop through the array in a fashion that processes it by pairs.  

(a)   For odd-numbered index, you will get the name.  For even-numbered index, you will get either a URL or the error message.

(b)  For each even-numbered index, use any of the standard methods to tell if it is a valid URL.  If not, it's an error message.

(c)  Store the resulting name/URL or name/errormsg in whatever form you need.
NGTLDAuthor Commented:
Maybe I misunderstand, but what I want to do is split out the ones where the url is not a url.
NerdsOfTechTechnology ScientistCommented:
is the data in an array?

if so you could do a loop like foreach or while

Can you post your code please.

Fundamentals of JavaScript

Learn the fundamentals of the popular programming language JavaScript so that you can explore the realm of web development.

Cornelia YoderArtistCommented:
Show me how your original string looks in detail.  Post an example:

$origstring = "(n1,url1)(n2,error2)(n3,url3)"  
 Something like this?
NGTLDAuthor Commented:
First I goofed it is an array, sorry here is the output
Array ( [0] => 3675795;results/3675795.pdf [1] => 20040123456;FAILED )

It's the ones like the failed I want to separate into a second array
Cornelia YoderArtistCommented:
Already being in an array makes it easier.

$array = array("3675795;results/3675795.pdf","20040123456;FAILED","xxx;FAILED","12345;results/12345.pdf");
$goodarray = array();
$failedarray = array();
for ($i=0;$i<count($array);$i++)
  $pairarray = explode(";", $array[$i]);
  if ($pairarray[1] == "FAILED")
    $failedarray[] = "$pairarray[0];$pairarray[1]";
    $goodarray[] = "$pairarray[0];$pairarray[1]";
print_r ($array);
echo "<BR>";
print_r ($goodarray);
echo "<BR>";
print_r ($failedarray);

Open in new window


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
NGTLDAuthor Commented:
I think it is close, although I am not sure what is wrong I get he following output  

Array ( [0] => 3675795;results/3675795.pdf [1] => A15;Reference Number Invalid or Not Yet Supported )
Array ( )

Before the tt are the values that are in $respass. THe second one should be in $resfail.  I am attaching the code as I implemented it.
			$respass = array();
			$resfail= array();
for ($i=0;$i<count($results);$i++)
  $pairarray = explode(";", $results[$i]);
  if ($pairarray[1] == "Reference Number Invalid or Not Yet Supported ")
    $resfail[] = "$pairarray[0];$pairarray[1]";
    $respass[] = "$pairarray[0];$pairarray[1]";
	print_r ($respass);
echo "<BR> tt <BR>" ;
print_r ($resfail);

Open in new window

NGTLDAuthor Commented:
it worked I had an extra space in there. Thanks !!!!
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.