Jump to content

Recommended Posts

Im trying to replace a few words in a text.

$convert = "
Full Tilt Poker Game #13864648535: $110 + $5 Heads Up Sit & Go (102264740), Table 1 - 15/30 - No Limit Hold\'em - 21:01:44 ET - 2009/08/06
Seat 1: Oneword (1,785)
Seat 2: Two Words (1,215)
Oneword posts the small blind of 15
Two Words posts the big blind of 30
The button is in seat #1
*** HOLE CARDS ***
Dealt to Oneword [6s 8s]
Oneword raises to 60
Two Words raises to 210
Oneword calls 150
*** FLOP *** [7s 9s 7c]
Two Words bets 270
Oneword raises to 1,575, and is all in
Two Words calls 735, and is all in
Oneword shows [6s 8s]
Two Words shows [Ad 2s]
Uncalled bet of 570 returned to Oneword
*** TURN *** [7s 9s 7c] [Qs]
*** RIVER *** [7s 9s 7c Qs] [5s]
Oneword shows a straight flush, Nine high
";

 

I need to determin who is in seat #1 to #10.

The names between : and ( could be anything. But they're always between : and ( so I need some help with a synthax to determine that in vars like:

 

$seat1 =
$seat2 =
$seat3 =
$seat4 =
$seat5 =
$seat6 =
$seat7 =
$seat8 =
$seat9 =
$seat10 = 

 

There not always 10 seats. I need to fill the seats till how many seats there are.

 

Could some1 point me in the right direction? What synthax can I use to determine the above?

 

Link to comment
https://forums.phpfreaks.com/topic/169202-need-help-converting-a-tekst/
Share on other sites

Add the following under your $convert string

<?php
preg_match_all('/Seat ([0-9]+):\\ (.*)\\ \\(/', $convert, $result, PREG_PATTERN_ORDER);
$seats 	 = $result[1];
$players = $result[2];
for($x = 0; $x < count($result[0]); $x++) {
print "Seat ".$seats[$x].": ".$players[$x]."<br />";
}
?>

Wow thanks for the fast reply. It works.

 

I have the seats & players in vars now. Now I've got another question.

 

I need $button to have the number at the end of this line

The button is in seat #1

$button = 1

 

And I need $mainplayer to have the name in this line:

Dealt to Oneword [6s 8s]

$mainplayer = Oneword

the name is always in between "to" and "[". And this line will be in $convert always one time.

 

Should this be done with the same syntax? Or is it easy-er with some other synthax?

 

I appreciate that u provided me with a piece of code (which I dont fully understand(yet)). I would be also happy if I was pushed in the right direction, im not lazy to google. I just dont know where to start searching :/

 

 

Ok, it is all done using regular expression pattern matching

preg_match_all('/Seat ([0-9]+):\\ (.*)\\ \\(/'

Everything you see within () is known as a backreference i.e. ([0-9]+) (.*) and captures that piece of data.

 

My advice is get a copy of regexbuddy. This will allow you to build and test regular expressions before putting into your code. It is an essential tool for programmers.

http://www.regexbuddy.com/

 

Thanks.

 

Can u explain what the : and / and \ and \\ and (.*) do in:

preg_match_all('/Seat ([0-9]+):\\ (.*)\\ \\(/', $convert, $result, PREG_PATTERN_ORDER);

 

 

 

 

If I understand correctly I can make something like

preg_match_all('The button is in seat #\\ (.*)\\ \\/', $convert, $result, PREG_PATTERN_ORDER);

(not sure because I dont know what all the slashes do)

 

and

 

preg_match_all('Dealt to \\ (.*)\\ \\[/', $convert, $result, PREG_PATTERN_ORDER);

 

And I dont need a For construction because there's always only 1 line.

The word I need will be in $result..Am i right?

/ is an indicator that there is a regular expression between both start and end /

\\ are escape characters (same as escaping quotes in strings) for escaping special characters

.* matches any character except a line break

() create a back reference to capture the portion of the string in the returned array

 

Try your expressions out. This is why I highly recommend Regexbuddy as you can test them out on your string rather than modifying them in your source code if incorrect.

Thanks alot for your help I figured it out, it works. Can U confirm if these are the right ways?:

 

 

preg_match_all('/Dealt to\\ (.*)\\ \\[/', $convert, $result2, PREG_PATTERN_ORDER);
$hero     = $result2[1];
for($x = 0; $x < count($result2[0]); $x++) {
   print "$hero[$x]";
}

 

preg_match_all('/The button is in seat #(.*)/', $convert, $result3, PREG_PATTERN_ORDER);
$button     = $result3[1];
for($x = 0; $x < count($result3[0]); $x++) {
   print "$button[$x]";
}

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.