text:
PHP Cookbook/Strings
From WikiContent
m (1 revision(s))
Current revision (22:28, 29 January 2010) (edit) (undo)
m (→Solution)
|(One intermediate revision not shown.)
|Line 260:
|Line 260:
for ($i = 0, $j = strlen($string); $i < $j; $i++) {
for ($i = 0, $j = strlen($string); $i < $j; $i++) {
if (strstr('aeiouAEIOU',$string[$i])) {
if (strstr('aeiouAEIOU',$string[$i])) {
Alternately, you can split the string into characters using <tt>str_split( )</tt>, and then loop over them using a <tt>foreach</tt> loop:
$string = "This weekend, I'm going shopping for a pet chicken.";
$vowels = 0;
foreach (str_split($string) as $c) {
if (strstr('aeiouAEIOU',$c)) {
Current revision
Strings in PHP are a sequence of characters, such as "We hold these truths to be self evident," or "Once upon a time," or even "111211211." When you read data from a file or output it to a web browser, your data is represented as strings.
Individual characters in strings can be referenced with array subscript style notation, as in C. The first character in the string is at index 0. For example:
$neighbor = 'Hilda'; print $neighbor[3]; d
However, PHP strings differ from C strings in that they are binary-safe (i.e., they can contain null bytes) and can grow and shrink on demand. Their size is limited only by the amount of memory that is available.
You can initialize strings three ways, similar in form and behavior to Perl and the Unix shell: with single quotes, with double quotes, and with the "here document" (heredoc) format. With single-quoted strings, the only special characters you need to escape inside a string are backslash and the single quote itself:
print 'I have gone to the store.'; print 'I\'ve gone to the store.'; print 'Would you pay $1.75 for 8 ounces of tap water?'; print 'In double-quoted strings, newline is represented by \n'; I have gone to the store. I've gone to the store. Would you pay $1.75 for 8 ounces of tap water? In double-quoted strings, newline is represented by \n
Because PHP doesn't check for variable interpolation or almost any escape sequences in single-quoted strings, defining strings this way is straightforward and fast.
Double-quoted strings don't recognize escaped single quotes, but they do recognize interpolated variables and the escape sequences shown in Table 1-1.
Table 1-1. Double-quoted string escape sequences
|Escape sequence
|Newline (ASCII 10)
|Carriage return (ASCII 13)
|Tab (ASCII 9)
|Dollar sign
|\ "
|Double quotes
|Left brace
|Right brace
|Left bracket
|Right bracket
|\0 through \777
|Octal value
|\x0 through \xFF
|Hex value
For example:
print "I've gone to the store."; print "The sauce cost \$10.25."; $cost = '$10.25'; print "The sauce cost $cost."; print "The sauce cost \$\061\060.\x32\x35."; I've gone to the store. The sauce cost $10.25. The sauce cost $10.25. The sauce cost $10.25.
The last line of code prints the price of sauce correctly because the character 1 is ASCII code 49 decimal and 061 octal. Character 0 is ASCII 48 decimal and 060 octal; 2 is ASCII 50 decimal and 32 hex; and 5 is ASCII 53 decimal and 35 hex.
Heredoc-specified strings recognize all the interpolations and escapes of double- quoted strings, but they don't require double quotes to be escaped. Heredocs start with <<< and a token. That token (with no leading or trailing whitespace), followed by a semicolon to end the statement (if necessary), ends the heredoc. For example:
print <<< END It's funny when signs say things like: Original "Root" Beer "Free" Gift Shoes cleaned while "you" wait or have other misquoted words. END; It's funny when signs say things like: Original "Root" Beer "Free" Gift Shoes cleaned while "you" wait or have other misquoted words.
With heredocs, newlines, spacing, and quotes are all preserved. The end-of-string identifier is usually all caps, by convention, and it is case sensitive. Thus, this is okay:
print <<< PARSLEY It's easy to grow fresh: Parsley Chives on your windowsill PARSLEY;
So is this:
print <<< DOGS If you like pets, yell out: DOGS AND CATS ARE GREAT! DOGS;
Heredocs are useful for printing out HTML with interpolated variables:
if ($remaining_cards > 0) { $url = '/deal.php'; $text = 'Deal More Cards'; } else { $url = '/new-game.php'; $text = 'Start a New Game'; } print <<< HTML There are $remaining_cards left.
 $text HTML;
In this case, the semicolon needs to go after the end-of-string delimiter, to tell PHP the statement is ended. In some cases, however, you shouldn't use the semicolon:
$a = <<< END Once upon a time, there was a END . ' boy!'; print $a; Once upon a time, there was a boy!
In this case, the expression needs to continue on the next line, so you don't use a semicolon. Note also that in order for PHP to recognize the end-of-string delimiter, the . string concatenation operator needs to go on a separate line from the end-of-string delimiter.
Accessing Substrings
You want to extract part of a string, starting at a particular place in the string. For example, you want the first eight characters of a username entered into a form.
Use substr( ) to select your substrings:
$substring = substr($string,$start,$length); $username = substr($_REQUEST['username'],0,8);
If $start and $length are positive, substr( ) returns $length characters in the string, starting at $start. The first character in the string is at position 0:
print substr('watch out for that tree',6,5); out f
If you leave out $length, substr( ) returns the string from $start to the end of the original string:
print substr('watch out for that tree',17); t tree
If $start plus $length goes past the end of the string, substr( ) returns all of the string from $start forward:
print substr('watch out for that tree',20,5); ree
If $start is negative, substr( ) counts back from the end of the string to determine where your substring starts:
print substr('watch out for that tree',-6); print substr('watch out for that tree',-17,5); t tree out f
If $length is negative, substr( ) counts back from the end of the string to determine where your substring ends:
print substr('watch out for that tree',15,-2); print substr('watch out for that tree',-4,-1); hat tr tre
See Also
Documentation on substr( ) at http://www.php.net/substr.
Replacing Substrings
You want to replace a substring with a different string. For example, you want to obscure all but the last four digits of a credit card number before printing it.
Use substr_replace( ) :
// Everything from position $start to the end of $old_string // becomes $new_substring $new_string = substr_replace($old_string,$new_substring,$start); // $length characters, starting at position $start, become $new_substring $new_string = substr_replace($old_string,$new_substring,$start,$length);
Without the $length argument, substr_replace( ) replaces everything from $start to the end of the string. If $length is specified, only that many characters are replaced:
print substr_replace('My pet is a blue dog.','fish.',12); print substr_replace('My pet is a blue dog.','green',12,4); $credit_card = '4111 1111 1111 1111'; print substr_replace($credit_card,'xxxx ',0,strlen($credit_card)-4); My pet is a fish. My pet is a green dog. xxxx 1111
If $start is negative, the new substring is placed at $start characters counting from the end of $old_string, not from the beginning:
print substr_replace('My pet is a blue dog.','fish.',-9); print substr_replace('My pet is a blue dog.','green',-9,4); My pet is a fish. My pet is a green dog.
If $start and $length are 0, the new substring is inserted at the start of $old_string:
print substr_replace('My pet is a blue dog.','Title: ',0,0); Title: My pet is a blue dog.
The function substr_replace( ) is useful when you've got text that's too big to display all at once, and you want to display some of the text with a link to the rest. For example, this displays the first 25 characters of a message with an ellipsis after it as a link to a page that displays more text:
$r = mysql_query("SELECT id,message FROM messages WHERE id = $id") or die( ); $ob = mysql_fetch_object($r); printf('%s', $ob->id, substr_replace($ob->message,' ...',25));
The more-text.php page can use the message ID passed in the query string to retrieve the full message and display it.
See Also
Documentation on substr_replace( ) at http://www.php.net/substr-replace.
Processing a String One Character at a Time
You need to process each character in a string individually.
Loop through each character in the string with for. This example counts the vowels in a string:
$string = "This weekend, I'm going shopping for a pet chicken."; $vowels = 0; for ($i = 0, $j = strlen($string); $i < $j; $i++) { if (strstr('aeiouAEIOU',$string[$i])) { $vowels++; } }
Alternately, you can split the string into characters using str_split( ), and then loop over them using a foreach loop:
$string = "This weekend, I'm going shopping for a pet chicken."; $vowels = 0; foreach (str_split($string) as $c) { if (strstr('aeiouAEIOU',$c)) { $vowels++; } }
Processing a string a character at a time is an easy way to calculate the "Look and Say" sequence:
function lookandsay($s) { // initialize the return value to the empty string $r = ''; /* $m holds the character we're counting, initialize to the first // character in the string*/ $m = $s[0]; // $n is the number of $m's we've seen, initialize to 1 $n = 1; for ($i = 1, $j = strlen($s); $i < $j; $i++) { // if this character is the same as the last one if ($s[$i] == $m) { // increment the count of this character $n++; } else { // otherwise, add the count and character to the return value $r .= $n.$m; // set the character we're looking for to the current one $m = $s[$i]; // and reset the count to 1 $n = 1; } } // return the built up string as well as the last count and character return $r.$n.$m; } for ($i = 0, $s = 1; $i < 10; $i++) { $s = lookandsay($s); print "$s\n"; } 1 11 21 1211 111221 312211 13112221 1113213211 31131211131221 13211311123113112211
It's called the "Look and Say" sequence because each element is what you get by looking at the previous element and saying what's in it. For example, looking at the first element, 1, you say "one one." So the second element is "11." That's two ones, so the third element is "21." Similarly, that's one two and one one, so the fourth element is "1211," and so on.
See Also
Documentation on for at http://www.php.net/for; more about the "Look and Say" sequence at http://mathworld.wolfram.com/LookandSaySequence.html.
Reversing a String by Word or Character
You want to reverse the words or the characters in a string.
Use strrev( ) to reverse by character:
print strrev('This is not a palindrome.'); .emordnilap a ton si sihT
To reverse by words, explode the string by word boundary, reverse the words, then rejoin:
$s = "Once upon a time there was a turtle."; // break the string up into words $words = explode(' ',$s); // reverse the array of words $words = array_reverse($words); // rebuild the string $s = join(' ',$words); print $s; turtle. a was there time a upon Once
Reversing a string by words can also be done all in one line:
$reversed_s = join(' ',array_reverse(explode(' ',$s)));
See Also
Recipe 18.8 discusses the implications of using something other than a space character as your word boundary; documentation on strrev( ) at http://www.php.net/strrev and array_reverse( ) at http://www.php.net/array-reverse.
Expanding and Compressing Tabs
You want to change spaces to tabs (or tabs to spaces) in a string while keeping text aligned with tab stops. For example, you want to display formatted text to users in a standardized way.
Use str_replace( ) to switch spaces to tabs or tabs to spaces:
$r = mysql_query("SELECT message FROM messages WHERE id = 1") or die(); $ob = mysql_fetch_object($r); $tabbed = str_replace(' ',"\t",$ob->message); $spaced = str_replace("\t",' ',$ob->message); print "With Tabs:
$tabbed
"; print "With Spaces:
$spaced
";
Using str_replace( ) for conversion, however, doesn't respect tab stops. If you want tab stops every eight characters, a line beginning with a five-letter word and a tab should have that tab replaced with three spaces, not one. Use the pc_tab_expand( ) function shown in Example 1-1 to turn tabs to spaces in a way that respects tab stops.
Example 1-1. pc_tab_expand( )
function pc_tab_expand($a) { $tab_stop = 8; while (strstr($a,"\t")) { $a = preg_replace('/^([^\t]*)(\t+)/e', "'\\1'.str_repeat(' ',strlen('\\2') * $tab_stop - strlen('\\1') % $tab_stop)",$a); } return $a; } $spaced = pc_tab_expand($ob->message);
You can use the pc_tab_unexpand() function shown in Example 1-2 to turn spaces back to tabs.
Example 1-2. pc_tab_unexpand( )
function pc_tab_unexpand($x) { $tab_stop = 8; $lines = explode("\n",$x); for ($i = 0, $j = count($lines); $i < $j; $i++) { $lines[$i] = pc_tab_expand($lines[$i]); $e = preg_split("/(.\{$tab_stop})/",$lines[$i],-1,PREG_SPLIT_DELIM_CAPTURE); $lastbit = array_pop($e); if (!isset($lastbit)) { $lastbit = ''; } if ($lastbit == str_repeat(' ',$tab_stop)) { $lastbit = "\t"; } for ($m = 0, $n = count($e); $m < $n; $m++) { $e[$m] = preg_replace('/ +$',"\t",$e[$m]); } $lines[$i] = join('',$e).$lastbit; } $x = join("\n", $lines); return $x; } $tabbed = pc_tab_unexpand($ob->message);
Both functions take a string as an argument and return the string appropriately modified.
Each function assumes tab stops are every eight spaces, but that can be modified by changing the setting of the $tab_stop variable.
The regular expression in pc_tab_expand( ) matches both a group of tabs and all the text in a line before that group of tabs. It needs to match the text before the tabs because the length of that text affects how many spaces the tabs should be replaced so that subsequent text is aligned with the next tab stop. The function doesn't just replace each tab with eight spaces; it adjusts text after tabs to line up with tab stops.
Similarly, pc_tab_unexpand( ) doesn't just look for eight consecutive spaces and then replace them with one tab character. It divides up each line into eight-character chunks and then substitutes ending whitespace in those chunks (at least two spaces) with tabs. This not only preserves text alignment with tab stops; it also saves space in the string.
See Also
Documentation on str_replace( ) at http://www.php.net/str-replace.
Controlling Case
You need to capitalize, lowercase, or otherwise modify the case of letters in a string. For example, you want to capitalize the initial letters of names but lowercase the rest.
Use ucfirst( ) or ucwords( ) to capitalize the first letter of one or more words:
print ucfirst("how do you do today?"); print ucwords("the prince of wales"); How do you do today? The Prince Of Wales
Use strtolower( ) or strtoupper( ) to modify the case of entire strings:
print strtoupper("i'm not yelling!"); // Tags must be lowercase to be XHTML compliant print strtolower('one'); I'M NOT YELLING! one
Use ucfirst( ) to capitalize the first character in a string:
print ucfirst('monkey face'); print ucfirst('1 monkey face'); Monkey face 1 monkey face
Note that the second line of output is not "1 Monkey face".
Use ucwords( ) to capitalize the first character of each word in a string:
print ucwords('1 monkey face'); print ucwords("don't play zone defense against the philadelphia 76-ers"); 1 Monkey Face Don't Play Zone Defense Against The Philadelphia 76-ers
As expected, ucwords( ) doesn't capitalize the "t" in "don't." But it also doesn't capitalize the "e" in "76-ers." For ucwords( ), a word is any sequence of nonwhitespace characters that follows one or more whitespace characters. Since both ' and - aren't whitespace characters, ucwords( ) doesn't consider the "t" in "don't" or the "e" in "76-ers" to be word-starting characters.
Both ucfirst( ) and ucwords( ) don't change the case of nonfirst letters:
print ucfirst('macWorld says I should get a iBook'); print ucwords('eTunaFish.com might buy itunaFish.Com!'); MacWorld says I should get a iBook ETunaFish.com Might Buy ItunaFish.Com!
The functions strtolower( ) and strtoupper( ) work on entire strings, not just individual characters. All alphabetic characters are changed to lowercase by strtolower( ) and strtoupper( ) changes all alphabetic characters to uppercase:
print strtolower("I programmed the WOPR and the TRS-80."); print strtoupper('"since feeling is first" is a poem by e. e. cummings.'); i programmed the wopr and the trs-80. "SINCE FEELING IS FIRST" IS A POEM BY E. E. CUMMINGS.
When determining upper- and lowercase, these functions respect your locale settings.
See Also
For more information about locale settings, see Chapter 16; documentation on ucfirst( ) at http://www.php.net/ucfirst, ucwords( ) at http://www.php.net/ucwords, strtolower( ) at http://www.php.net/strtolower, and strtoupper( ) at http://www.php.net/strtoupper.
Interpolating Functions and Expressions Within Strings
You want to include the results of executing a function or expression within a string.
Use the string concatenation operator (.) when the value you want to include can't be inside the string:
print 'You have '.($_REQUEST['boys'] + $_REQUEST['girls']).' children.'; print "The word '$word' is ".strlen($word).' characters long.'; print 'You owe '.$amounts['payment'].' immediately'; print "My circle's diameter is ".$circle->getDiameter().' inches.';
You can put variables, object properties, and array elements (if the subscript is unquoted) directly in double-quoted strings:
print "I have $children children."; print "You owe $amounts[payment] immediately."; print "My circle's diameter is $circle->diameter inches.";
Direct interpolation or using string concatenation also works with heredocs. Interpolating with string concatenation in heredocs can look a little strange because the heredoc delimiter and the string concatenation operator have to be on separate lines:
print <<< END Right now, the time is END . strftime('%c') . <<< END but tomorrow it will be END . strftime('%c',time() + 86400);
Also, if you're interpolating with heredocs, make sure to include appropriate spacing for the whole string to appear properly. In the previous example, "Right now the time" has to include a trailing space, and "but tomorrow it will be" has to include leading and trailing spaces.
See Also
For the syntax to interpolate variable variables (like ${"amount_$i"}), see Recipe 5.5; documentation on the string concatenation operator at http://www.php.net/language.operators.string.
Trimming Blanks from a String
You want to remove whitespace from the beginning or end of a string. For example, you want to clean up user input before validating it.
Use ltrim( ) , rtrim( ), or trim( ). ltrim( ) removes whitespace from the beginning of a string, rtrim( ) from the end of a string, and trim( ) from both the beginning and end of a string:
$zipcode = trim($_REQUEST['zipcode']); $no_linefeed = rtrim($_REQUEST['text']); $name = ltrim($_REQUEST['name']);
For these functions, whitespace is defined as the following characters: newline, carriage return, space, horizontal and vertical tab, and null.
Trimming whitespace off of strings saves storage space and can make for more precise display of formatted data or text within
 tags, for example. If you are doing comparisons with user input, you should trim the data first, so that someone who mistakenly enters "98052 " as their Zip Code isn't forced to fix an error that really isn't. Trimming before exact text comparisons also ensures that, for example, "salami\n" equals "salami." It's also a good idea to normalize string data by trimming it before storing it in a database.
The trim( ) functions can also remove user-specified characters from strings. Pass the characters you want to remove as a second argument. You can indicate a range of characters with two dots between the first and last characters in the range.
// Remove numerals and space from the beginning of the line print ltrim('10 PRINT A$',' 0..9'); // Remove semicolon from the end of the line print rtrim('SELECT * FROM turtles;',';'); PRINT A$ SELECT * FROM turtles
PHP also provides chop( ) as an alias for rtrim( ). However, you're best off using rtrim( ) instead, because PHP's chop( ) behaves differently than Perl's chop( ) (which is deprecated in favor of chomp( ), anyway) and using it can confuse others when they read your code.
See Also
Documentation on trim( ) at http://www.php.net/trim, ltrim( ) at http://www.php.net/ltrim, and rtrim( ) at http://www.php.net/rtrim.
Parsing Comma-Separated Data
You have data in comma-separated values ( CSV) format, for example a file exported from Excel or a database, and you want to extract the records and fields into a format you can manipulate in PHP.
If the CSV data is in a file (or available via a URL), open the file with fopen( ) and read in the data with fgetcsv( ). This prints out the data in an HTML table:
$fp = fopen('sample2.csv','r') or die("can't open file"); print "
\n"; while($csv_line = fgetcsv($fp,1024)) { print '
'; for ($i = 0, $j = count($csv_line); $i < $j; $i++) { print ''.$csv_line[$i].'	'; } print "
\n"; } print '
\n'; fclose($fp) or die("can't close file");
The second argument to fgetcsv( ) must be longer than the maximum length of a line in your CSV file. (Don't forget to count the end-of-line whitespace.) If you read in CSV lines longer than 1K, change the 1024 used in this recipe to something that accommodates your line length.
You can pass fgetcsv( ) an optional third argument, a delimiter to use instead of a comma (,). Using a different delimiter however, somewhat defeats the purpose of CSV as an easy way to exchange tabular data.
Don't be tempted to bypass fgetcsv( ) and just read a line in and explode( ) on the commas. CSV is more complicated than that, in order to deal with embedded commas and double quotes. Using fgetcsv( ) protects you and your code from subtle errors.
See Also
Documentation on fgetcsv( ) at http://www.php.net/fgetcsv.
Parsing Fixed-Width Delimited Data
You need to break apart fixed-width records in strings.
Use substr( ) :
$fp = fopen('fixed-width-records.txt','r') or die ("can't open file"); while ($s = fgets($fp,1024)) { $fields[1] = substr($s,0,10); // first field: first 10 characters of the line $fields[2] = substr($s,10,5); // second field: next 5 characters of the line $fields[3] = substr($s,15,12); // third field: next 12 characters of the line // a function to do something with the fields process_fields($fields); } fclose($fp) or die("can't close file");
Or unpack( ) :
$fp = fopen('fixed-width-records.txt','r') or die ("can't open file"); while ($s = fgets($fp,1024)) { // an associative array with keys "title", "author", and "publication_year" $fields = unpack('A25title/A14author/A4publication_year',$s); // a function to do something with the fields process_fields($fields); } fclose($fp) or die("can't close file");
Data in which each field is allotted a fixed number of characters per line may look like this list of books, titles, and publication dates:
$booklist=<<<END Elmer Gantry Sinclair Lewis1927 The Scarlatti InheritanceRobert Ludlum 1971 The Parsifal Mosaic Robert Ludlum 1982 Sophie's Choice William Styron1979 END;
In each line, the title occupies the first 25 characters, the author's name the next 14 characters, and the publication year the next 4 characters. Knowing those field widths, it's straightforward to use substr( ) to parse the fields into an array:
$books = explode("\n",$booklist); for($i = 0, $j = count($books); $i < $j; $i++) { $book_array[$i]['title'] = substr($books[$i],0,25); $book_array[$i]['author'] = substr($books[$i],25,14); $book_array[$i]['publication_year'] = substr($books[$i],39,4); }
Exploding $booklist into an array of lines makes the looping code the same whether it's operating over a string or a series of lines read in from a file.
The loop can be made more flexible by specifying the field names and widths in a separate array that can be passed to a parsing function, as shown in the pc_fixed_width_substr( ) function in Example 1-3.
Example 1-3. pc_fixed_width_substr( )
function pc_fixed_width_substr($fields,$data) { $r = array(); for ($i = 0, $j = count($data); $i < $j; $i++) { $line_pos = 0; foreach($fields as $field_name => $field_length) { $r[$i][$field_name] = rtrim(substr($data[$i],$line_pos,$field_length)); $line_pos += $field_length; } } return $r; } $book_fields = array('title' => 25, 'author' => 14, 'publication_year' => 4); $book_array = pc_fixed_width_substr($book_fields,$books);
The variable $line_pos keeps track of the start of each field, and is advanced by the previous field's width as the code moves through each line. Use rtrim( ) to remove trailing whitespace from each field.
You can use unpack( ) as a substitute for substr( ) to extract fields. Instead of specifying the field names and widths as an associative array, create a format string for unpack( ). A fixed-width field extractor using unpack( ) looks like the pc_fixed_width_unpack( ) function shown in Example 1-4.
Example 1-4. pc_fixed_width_unpack( )
function pc_fixed_width_unpack($format_string,$data) { $r = array(); for ($i = 0, $j = count($data); $i < $j; $i++) { $r[$i] = unpack($format_string,$data[$i]); } return $r; } $book_array = pc_fixed_width_unpack('A25title/A14author/A4publication_year', $books);
Because the A format to unpack( ) means "space padded string," there's no need to rtrim( ) off the trailing spaces.
Once the fields have been parsed into $book_array by either function, the data can be printed as an HTML table, for example:
$book_array = pc_fixed_width_unpack('A25title/A14author/A4publication_year', $books); print "
\n"; // print a header row print '
'; print join('	',array_keys($book_array[0])); print "
\n"; // print each data row foreach ($book_array as $row) { print '
'; print join('	',array_values($row)); print "
\n"; } print '
\n';
Joining data on 	 produces a table row that is missing its first  and last 	. We produce a complete table row by printing out
 before the joined data and
 after the joined data.
Both substr( ) and unpack( ) have equivalent capabilities when the fixed-width fields are strings, but unpack( ) is the better solution when the elements of the fields aren't just strings.
See Also
For more information about unpack( ), see Recipe 1.14 and http://www.php.net/unpack; Recipe 4.9 discusses join( ).
Taking Strings Apart
You need to break a string into pieces. For example, you want to access each line that a user enters in a <textarea> form field.
Use explode( ) if what separates the pieces is a constant string:
$words = explode(' ','My sentence is not very complicated');
Use split( ) or preg_split( ) if you need a POSIX or Perl regular expression to describe the separator:
$words = split(' +','This sentence has some extra whitespace in it.'); $words = preg_split('/\d\. /','my day: 1. get up 2. get dressed 3. eat toast'); $lines = preg_split('/[\n\r]+/',$_REQUEST['textarea']);
Use spliti( ) or the /i flag to preg_split( ) for case-insensitive separator matching:
$words = spliti(' x ','31 inches x 22 inches X 9 inches'); $words = preg_split('/ x /i','31 inches x 22 inches X 9 inches');
The simplest solution of the bunch is explode( ). Pass it your separator string, the string to be separated, and an optional limit on how many elements should be returned:
$dwarves = 'dopey,sleepy,happy,grumpy,sneezy,bashful,doc'; $dwarf_array = explode(',',$dwarves);
Now $dwarf_array is a seven element array:
print_r($dwarf_array); Array ( [0] => dopey [1] => sleepy [2] => happy [3] => grumpy [4] => sneezy [5] => bashful [6] => doc )
If the specified limit is less than the number of possible chunks, the last chunk contains the remainder:
$dwarf_array = explode(',',$dwarves,5); print_r($dwarf_array); Array ( [0] => dopey [1] => sleepy [2] => happy [3] => grumpy [4] => sneezy,bashful,doc )
The separator is treated literally by explode( ). If you specify a comma and a space as a separator, it breaks the string only on a comma followed by a space — not on a comma or a space.
With split( ), you have more flexibility. Instead of a string literal as a separator, it uses a POSIX regular expression:
$more_dwarves = 'cheeky,fatso, wonder boy, chunky,growly, groggy, winky'; $more_dwarf_array = split(', ?',$more_dwarves);
This regular expression splits on a comma followed by an optional space, which treats all the new dwarves properly. Those with a space in their name aren't broken up, but everyone is broken apart whether they are separated by "," or ", ":
print_r($more_dwarf_array); Array ( [0] => cheeky [1] => fatso [2] => wonder boy [3] => chunky [4] => growly [5] => groggy [6] => winky )
Similar to split( ) is preg_split( ) , which uses a Perl-compatible regular-expression engine instead of a POSIX regular-expression engine. With preg_split( ), you can take advantage of various Perlish regular-expression extensions, as well as tricks such as including the separator text in the returned array of strings:
$math = "3 + 2 / 7 - 9"; $stack = preg_split('/ *([+\-\/*]) */',$math,-1,PREG_SPLIT_DELIM_CAPTURE); print_r($stack); Array ( [0] => 3 [1] => + [2] => 2 [3] => / [4] => 7 [5] => - [6] => 9 )
The separator regular expression looks for the four mathematical operators (+, -, /, *), surrounded by optional leading or trailing spaces. The PREG_SPLIT_DELIM_CAPTURE flag tells preg_split( ) to include the matches as part of the separator regular expression in parentheses in the returned array of strings. Only the mathematical operator character class is in parentheses, so the returned array doesn't have any spaces in it.
See Also
Regular expressions are discussed in more detail in Chapter 13; documentation on explode( ) at http://www.php.net/explode, split( ) at http://www.php.net/split, and preg_split( ) at http://www.php.net/preg-split.
Wrapping Text at a Certain Line Length
You need to wrap lines in a string. For example, you want to display text in
/
 tags but have it stay within a regularly sized browser window.
Use wordwrap( ) :
$s = "Four score and seven years ago our fathers brought forth on this continen t a new nation, conceived in liberty and dedicated to the proposition that all men are created equal."; print "
\n".wordwrap($s)."\n
";
 Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.

By default, wordwrap( ) wraps text at 75 characters per line. An optional second argument specifies different line length:
print wordwrap($s,50); Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.
Other characters besides "\n" can be used for linebreaks. For double spacing, use "\n\n":
print wordwrap($s,50,"\n\n"); Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.
There is an optional fourth argument to wordwrap( ) that controls the treatment of words that are longer than the specified line length. If this argument is 1, these words are wrapped. Otherwise, they span past the specified line length:
print wordwrap('jabberwocky',5); print wordwrap('jabberwocky',5,"\n",1); jabberwocky jabbe rwock y
See Also
Documentation on wordwrap( ) at http://www.php.net/wordwrap.
Storing Binary Data in Strings
You want to parse a string that contains values encoded as a binary structure or encode values into a string. For example, you want to store numbers in their binary representation instead of as sequences of ASCII characters.
Use pack( ) to store binary data in a string:
$packed = pack('S4',1974,106,28225,32725);
Use unpack( ) to extract binary data from a string:
$nums = unpack('S4',$packed);
The first argument to pack( ) is a format string that describes how to encode the data that's passed in the rest of the arguments. The format string S4 tells pack( ) to produce four unsigned short 16-bit numbers in machine byte order from its input data. Given 1974, 106, 28225, and 32725 as input, this returns eight bytes: 182, 7, 106, 0, 65, 110, 213, and 127. Each two-byte pair corresponds to one of the input numbers: 7 * 256 + 182 is 1974; 0 * 256 + 106 is 106; 110 * 256 + 65 = 28225; 127 * 256 + 213 = 32725.
The first argument to unpack( ) is also a format string, and the second argument is the data to decode. Passing a format string of S4, the eight-byte sequence that pack( ) produced returns a four-element array of the original numbers:
print_r($nums); Array ( [1] => 1974 [2] => 106 [3] => 28225 [4] => 32725 )
In unpack( ), format characters and their count can be followed by a string to be used as an array key. For example:
$nums = unpack('S4num',$packed); print_r($nums); Array ( [num1] => 1974 [num2] => 106 [num3] => 28225 [num4] => 32725 )
Multiple format characters must be separated with / in unpack( ):
$nums = unpack('S1a/S1b/S1c/S1d',$packed); print_r($nums); Array ( [a] => 1974 [b] => 106 [c] => 28225 [d] => 32725 )
The format characters that can be used with pack( ) and unpack( ) are listed in Table 1-2.
Table 1-2. Format characters for pack( ) and unpack( )
|Format character
|Data type
|NUL-padded string
|Space-padded string
|Hex string, low nibble first
|Hex string, high nibble first
|signed char
|unsigned char
|signed short (16 bit, machine byte order)
|unsigned short (16 bit, machine byte order)
|unsigned short (16 bit, big endian byte order)
|unsigned short (16 bit, little endian byte order)
|signed int (machine-dependent size and byte order)
|unsigned int (machine-dependent size and byte order)
|signed long (32 bit, machine byte order)
|unsigned long (32 bit, machine byte order)
|unsigned long (32 bit, big endian byte order)
|unsigned long (32 bit, little endian byte order)
|float (machine dependent size and representation)
|double (machine dependent size and representation)
|NUL byte
|Back up one byte
|NUL-fill to absolute position
For a, A, h, and H, a number after the format character indicates how long the string is. For example, A25 means a 25-character space-padded string. For other format characters, a following number means how many of that type appear consecutively in a string. Use * to take the rest of the available data.
You can convert between data types with unpack( ). This example fills the array $ascii with the ASCII values of each character in $s:
$s = 'platypus'; $ascii = unpack('c*',$s); print_r($ascii); Array ( [1] => 112 [2] => 108 [3] => 97 [4] => 116 [5] => 121 [6] => 112 [7] => 117 [8] => 115 )
See Also
Documentation on pack( ) at http://www.php.net/pack and unpack( ) at http://www.php.net/unpack .


text:
Sometimes it's the smallest gesture that makes a difference to your neighbor.
In that suburban house across the street, the children may be going hungry. They could be coming home from school and not getting another meal until breakfast at school the next day.
And on weekends, they may not eat at all from Friday afternoon to Monday morning.
Or it may be happening at the small brick house at the end of the dusty road. It's not true that just because you live in a rural area it's easy to find food. More than 2 million people living in less populated areas go hungry every day.
For nearly 17 million children in America today, getting out of school for the summer means wondering where and when their next meal is coming from, according to the Stamp Out Hunger Food Drive.
There are some misconceptions about who is going hungry in our neighborhoods.
It's not just those who are homeless or living on the edge. It's the family of four with only one working parent. It's the retired widow who is having to choose between medicine and food. And it's the college-educated couple who may be struggling to get by on one income.
More than 50 million people are going hungry every day in America. That's one in six.
That's why the Stamp Out Hunger Food Drive that happens Saturday is important.
All you have to do is leave canned goods or nonperishable items by your mailbox or on your porch and your neighborhood letter carrier will pick it up and deliver it to our local food pantries.
They aren't mailing the food anywhere.
All the donated food stays right here in the community to replenish food supplies before schools let out for the summer.
Last year, letter carriers collected more than 70 million pounds of food nationally, the ninth consecutive year that at least that much was collected.
Local residents in Charleston donated 251,884 pounds of food through the drive.
More than 1 billion pounds of food have been collected during the drive's 21-year history.
This year, the nation's 175,000 letter carriers will be collecting food donations in more than 10,000 local communities and delivering them to food bank members of Feeding America and other hunger-relief organizations.
What is needed are staples that do not require refrigeration, and nothing in glass bottles because they don't transport well.
You can help, even if you don't own a mailbox. You can leave the canned goods on your porch and many of our local post offices will have special collection boxes for the food.
If you aren't going to be home on Saturday, you can donate through the Lowcountry Food Bank's Virtual Food Drive. Just go to their home page and look for the big stamp to follow the instructions.
You can donate various amounts and see what the money you donate will buy.
It's everything from pallets of fresh food and vegetables to toiletries and pet food.
While a few cans of food don't seem like much, they add up at a time when donations to food pantries are at one of the lowest levels in the year.
Reach Stephanie Harvin at 937-5557 or email@example.com.

subset: commoncrawl


text:
from ARGENTINA : +54 115 252 1423
from ITALY : +39 024 032 6417
from MEXICO : +52 554 628 2555
from USA : +1 866 376 7831
from UK : +44 203 318 6993
from SPAIN : +34 911878153
The Town House 31 is a small and very elegant boutique hotel located in one of the most popular areas of Milan. It is housed in the 19th-century building, steps away from the famous Milan's fashion district – Via Montenapoleone. It features 19 very comfortable bedrooms, where you will feel like at home, while at the same time being in the heart of Milan!
Catégorie: Epoque Superior - en savoir plus
The Town House 31 Hotel is situated in Milan, in the relaxing neighborhood near Porta Venezia. Within a short distance, there are many important streets in Milan. These are: Corso Venezia, Corso Buenos Aires as well as Via Montenapoleone. In the vicinity of this lovely boutique hotel, there is a metro station which connects to the main sites of the city.
Adresse: - Town House 31 Milan Map


text:
Natural Language Searching
From Wiki
Natural Language searching uses a relevance ranking to locate documents that are a good match your search terms. It uses a complex algorithm that takes into account factors such as the number of documents that include your search terms and the number of times those terms appear in each document. This is a very different approach from Boolean Searching, which matches your search criteria exactly to documents in the collection.
[edit] Search Forms
Natural Language Searching used on two forms in LexisNexis Library Express
- Search the News widget on the Easy Search form
- Power Search form (as an option)
[edit] Using Natural Language
The natural language feature works best when you:
- Need to research general or conceptual issues, rather than very specific topics
- Don't know much about an issue except for a few basic terms
- Are researching a complex issue and can't construct an effective search using terms and connectors
- Don't feel comfortable writing search requests using terms and connectors
- Want to supplement a terms and connectors search to ensure thorough results
Use Boolean Searching if you want a document from a specific source or source type, from a particular date range, or that uses your search terms in a particular way.
[edit] Developing a Natural Language Search
Note: Date restrictions, fielded searching, Boolean connectors such as AND and OR, and wildcard characters such as ! and * are not valid in natural language searches.
To develop a natural language search, use terms that you might use when describing your research topic to another person. Then select the most important terms and phrases, and enter them in any order. To find articles about efforts in the fast food industry to use recyclable packaging, you might use this search:
recycle package "fast food" trash
Enter phrases in quotation marks, like "fast food" to get an exact match. Entering the terms without quotation marks could return documents where they are in different sentences or a different order -- "the food was delivered on a fast train.


text:
GREENVILLE, Ill. -- The Greenville College football program will play the 2013 season under new leadership as offensive coordinator Robbie Schomaker has been promoted to interim head coach. Schomaker replaces former head coach Ordell Walker who accrued a career record of 22-9, coached the team to the school's first NCCAA Victory Bowl championship, and guided the football program to UMAC championships in 2010 and 2012. Walker has been named head football coach at fellow NCCAA member Bluefield College in Virginia.
"Coach Walker was a mentor to me and he will be dearly missed as a friend," said Schomaker. "One important thing he taught me about discipleship was its not enough to be discipled. At some point, you have to become the mentor, and I am excited about that opportunity. We talk a lot in our meetings about the fact that this program is bigger than any one individual, and no matter who is at the helm we will continue to strive and pursue the reaching of our potential as a program and as individuals."
Schomaker came to Greenville College in 2010 after four seasons of coaching. Schomaker previously coordinated the offense and coached the quarterbacks. The Panthers finished in top 10 in the NCAA Division III for rushing yards with an average in excess of 300 yards per game each year Schomaker served as offensive coordinator.
In addition, he helped develop 11 first team all-Conference Players, including two UMAC offensive player of the year winners and an NCCAA offensive player of the year.
His 2011 offense ranked third in the country with 501 yards per game. The team also led the conference in rushing yards, total yards, and points in 2011 and 2012. The offense Greenville runs is organized and implements a fast-paced, no huddle, shotgun triple option system.
As recruiting coordinator, Schomaker implemented and organized a national and local recruiting system. He oversaw successful recruiting trips to California, Arizona, Florida, and Texas while creating a system of weekly recruiting letters and emails. Greenville's three largest recruiting classes were secured under his leadership with an average of 65 new players each season from 2010-12.
Before Greenville, Coach Schomaker was at Trinity International University where he spent four seasons as the offensive line coach and two seasons as the special teams coordinator. Coach Schomaker received his bachelor's degree in business management at Trinity International in 2005 where he was a two year starter at defensive end. Coach Schomaker is finishing his master's thesis in communication and culture from TIU.
"I could not imagine a better scenario to take over a program," said Schomaker. "The men on this team love each other, hold each other accountable and are talented football players. Although we will all miss Coach Walker dearly we will not allow our emotions to define our actions. We will strive and move ahead towards our goals as a program."


text:
A proposed city business moved a step closer to becoming a reality after the city's Planning Commission made a recommendation to forward to city council the site plan approval recommendation for the Old Kennel Brick Oven.
A proposed city business moved a step closer to becoming a reality after the city's Planning Commission made a recommendation to forward to city council the site plan approval recommendation for the Old Kennel Brick Oven.
Timothy J. Howell, 216 Sutherland St., appeared before the commission last month trying to get approval so he could construct a commercial kitchen to include his brick oven. However, numerous questions were raised.
"We met with Dale Stuart (city manager and zoning officer) and went over the ingress and egress requirements and the parking requirements," Howell told the planning commission Monday night.
Stuart said there was understanding between Howell and the city, but the planning commission has the final decision.
However, the final part of the process cannot be approved until paving is completed on a required parking lot.
"We cannot complete the storm control until we know the actual layout," Stuart said. "There is a requirement for one parking space and we are suggesting at least one for a handicapped spot as well for a total of two."
Howell told the planning commission last month the request for a site plan was being made after his wife started baking artisan bread and then wanted to sell it consumers.
Because the Howells want to sell the bead locally and at farmers' markets, the state's Department of Agriculture said a commercial kitchen had to be constructed.
"We are trying to deal with the ordinance requirements without putting the new business in peril for existence with upfront costs that aren't upfront safety requirements," Stuart said. "My recommendation is for two years for the completion of ingress and egress and the parking pavement is immediate."
Howell told the commission that the paving of the parking area immediately was not an issue.
"We need to come up with a time for the ingress/egress road," he said. "We want to give ourselves as much time as possible."
Chairman David Kronberg said he understood that with a long drive, time is needed.
"I think you are going to have such a great increase in business that two years should be plenty," said commission member Billie Livingston. "I think it is a wonderful business and I understand the hardship of building a building and meeting all these requirements."
Commission member Jim Maynard said the panel needs to be careful with the multi-year extension.
"We don't want another one like we had," he said of another business. "We gave them two or three years to pave and now they may not pave at all."
Commission member Paul Tranquilla said it may be difficult to get a loan to meet the requirement if the extension is too short.
"If they need to get a loan, no bank will give them one without two years of being in business," he said. "Three years would be more acceptable." When Howell was asked if he could do it in two years, he replied, "we will do our best."
A motion was made to recommend the site plan approval to city council with several stipulations including two parking spaces with one being handicapped; within two years to have a 25-foot wide ingress/egress road; council should not take these recommendations as a template for other businesses; and the storm water flow control plan has to be approved by the city.
The matter will go before council on June 25 for its approval.


text:
New to all this. Just need to know a good dosage for L-Dec (female). And what would be good to cycle with it. Thanks for any advice.
Printable View
New to all this. Just need to know a good dosage for L-Dec (female). And what would be good to cycle with it. Thanks for any advice.
I assume 'l-dex" = Liquidex = liquid arimidex? This is a liquid form of an aggressive aromatase inhibitor. What do you need that for?
Perhaps better to start on the other side - what are your goals? Where are you now? Current stats? How long have you been training? What is your current split? What does your diet look like? What are your diet goals?
Thanks for the reply. Honestly,I'm a has been. I'm trying to get back into the bodybuilding just for personal. I have been on a low carb diet since last month. Light lifting and a lot of cardio. I honestly want to be ripped but to be around 180lbs. No more than 5-10% body fat. I'm just trying to drop the weight that I've gained since I stopped training. Suggestions are greatly appreciated. Wanted to run a cycle of anavar and L-Dex or am I going the wrong direction. Thanks a lot!
Arimidex is a very harsh AI. I just simply woudlnt' recommend it. Its not good to just force a shut off of estrogen.
Rely on diet / training / cardio to drop fat. Var may help more w/ recovery than anything but arimidex is just overkill. Killing your estrogen also kills water and promotes dry joints --> tendonitis. Not to mention nice big fat rebound when you come off it. So much easier to let your diet drive the metabolic changes you want.
What about if I run a cycle of Clen with my diet and cardio. Then run the Var. I know I need to get my body fat down before piling on the muscle. Any suggestions? Thanks again.
I lost you on this: " I honestly want to be ripped but to be around 180lbs. No more than 5-10% body fat"
Is that saying you want to maintain a bodyfat% of 5-10% after all this? FWIW, even national level competitors don't maintain that and you may find a handful of pro level, extremely experienced female bodybuilders w/ 5% bodyfat.
What are your stats now?
I would seriously just look at diet, training and cardio. I personally wouldn't just stop lifting as weight training contributes to increasing muscle mass, which correspondingly reduces bodyfat. If you just diet & cardio hard, you're burning off both fat & muscle. Feel free to include clen w/ the whole thing, but I would spend most of my time focusing on optimizing diet and not looking for quicky fat loss things. Those are usually the things that result in a nice big fat rebound. There's no reason you need to starve down before you can start lifting. I would recommend holding off on var until you drop some bodyfat -again not knowing what your current stats are. Generally if you aren't already at ~12-14% bf, including steroids can start to produce a "thick" feel . If you're just getting back into things, I'd spend time getting the program started, established, optimized and functioning.
Thanks again. I'm currently between 16-18% bf. I will continue to work on my diet. I have been on a low carb diet. Any suggestions as far as diet? And yes I would like to maintain 5-10% bf. Thanks
Sent from my HTC One using Tapatalk
You can't maintain 5-10% w/o heading towards catabolism. It will burn out. Your metabolism will slow down because it interprets ultra lean as a "drought" environment. It is a survival mechanism to preserve the energy resources it has available (i.e. fat) and then will begin to feed off your muscle. Your body will tell you to go fuck yourself. Sorry.. Body doesn't work like that.
You said you want to "get back into bodybuilding" - have you competed before? Have you been sub 10%? And if yes, for how long? How are you currently measuring bodyfat?
How tall are you BTW?
I think you should instead work towards a maintainable level of leanness. Don't get hung up on the number on the caliper but rather something that you like and can maintain.
Can you please detail what it means "low carb diet"? Please list your current meal plan and break out of macro nutrients and total cals. Are you doing any refeeds?


text:
First off, we want to say that we are so overwhelmed with the love, support, thoughts, prayers, words of encouragement and hugs we have received from all of you. We haven't been able to read our blog over the last two days so what a surprise to find tonight. Thank you just doesn't seem enough to express our appreciation for it all.
Monday's results couldn't have been any worst. After my sisters arrived and had time to spend with mom, we joined the doctor in the conference room. You always know when they want to go to the conference room that it can't be good. The doctor told us that she had in fact had a stroke. In fact she had not one but two blood clots on both sides of her brain in the back. At this point, these clots were keeping her from being about to do anything on her own. They had also blinded her and taken away her ability to speak. We also found out that she has a complete blockage in her heart, which was keeping her heart from beating correctly.
Options weren't very good. No matter what they wanted to do for the stroke, the heart issue would get in the way. And no matter what they wanted to do for the heart issue, the stroke got in the way. Add to that challenge, the fact that fluid was now gathering around the lining of her brain, we were at a major crossroads.
It was finally the point that we had to ask, "Is this it, or is there a possibility that she could improve even with the blood clots." The answer we received told us volumes. The reply from the doctor was, "No, at this point, this will be the best that she will ever be."
With that said, we knew what we needed to do.
Today (Tuesday), we spent the day preparing. We spent time with her, cried together and made calls to make arrangements.
Tomorrow, they are going to pull all the monitors and tubes out, except her IV and make her as comfortable as possible. Then when we are ready, tomorrow morning they are going to turn off her pacemaker. Her heart should still beat on its own, but just slower. At some point it should go into arrhythmia and then stop on its own. We aren't sure how long this will take, but we will be there together with her. We will talk with her and hold her hands and help her go to sleep peacefully.
This has to be the hardest decision we have ever had to make. But we know it is what she wanted. To keep her here for our own selfish wants would be a disservice to her. We are ready (I hope). We pray that it will be quick and painless. But most of all we hope she will finally find peace.
We are going to miss her. It saddens me to know that when we open Belle Grove, she won't be able to be there to enjoy it with us. I know that she will be there in spirit and will be so proud of me. She had told me so many times how proud she was we were pursuing this dream.
And even through this day, my wonderful husband still kept us on course. We have now submitted the preliminary site plan to the Zoning department for approval. We should be on track for at least a soft opening on March 16th (James Madison's Birthday) and fully open by April 1st.
Life really does happen, but we march on, even though the tough decisions. But one thing that I have learned from this is that we aren't alone in those times. We endure them with the help of our loved ones and friends, whether here with us or in cyber space.
Thank you


text:
For a start, it looks balanced (notice how the second channel is always the inverse of the first).
My initial guess would be to take RB1 and see if applying the "Async Serial" analyzer gives anything useful. Try setting it to "autobaud" and have it guess the baud rate. I'm suggestion RB1 because serial is "normally high" and goes low at the start of the byte, which is what RB1 is doing.
It is a Async Serial signal.
Good guess, huh? Anyway you usually have some idea of what you are dealing with, and even if not, with experience you can usually pick patterns, as I did then. smiley


text:
(-2)[-3 - 4 - 5 - 2^3 - (-1)]
im not sure how to solve this problem. or like problems. Obviously my knowledge is not in algebra or its theories.
If you can help me understand and help with step by step problem solving i would greatly appreciate it.
Thank you.


text:
[Note: The autonomic nervous system is responsible for maintaining stability of functions such as heart rate/blood pressure in the body – and a part of it, the sympathetic nervous system, becomes more active when the body is stressed by physical or psychological stimuli.]
The Chronic Fatigue Syndrome (CFS) has been shown to be associated with orthostatic intolerance and cardiovascular dysregulation.
We investigated the cardiovascular responses to combined orthostatic stress and isometric exercise in adolescents with CFS. We included a consecutive sample of 15 adolescents 12 to 18 years old with CFS diagnosed according to a thorough and standardized set of investigations, and a volunteer sample of 56 healthy control subjects of equal sex and age distribution.
Heart rate, systolic, mean and diastolic blood pressure, stroke index, and total peripheral resistance index were non-invasively recorded during lower body negative pressure (LBNP) combined with two consecutive periods of handgrip.
In addition, we measured baseline plasma catecholamines, and recorded symptoms.
Our results indicate that adolescents with CFS have increased sympathetic activity at rest with exaggerated cardiovascular response to orthostatic stress, but attenuated cardiovascular response when performing isometric exercise during orthostatic stress. This suggests that CFS might be causally related to sympathetic dysfunction.
Source: European Journal of Applied Physiology. Dec 8, 2007 [E-pub ahead of print] PMID: 18066580, by Wyller VB, Saul JP, Walløe L, Thaulow E. Department of Pediatrics, Rikshospitalet-Radiumhospitalet Medical Center, Oslo, Norway.


text:
Modern stealth action games typically give the player a choice: do you play aggressively, leaving a wake of bodies behind--or do you play silently, avoiding confrontation whenever possible? Last year's Dishonored was celebrated for its ability to adapt to playstyle. However, what's Thief's approach?
Stephane Roy, senior producer on the game, says the game is meant to be played in a more thoughtful, less aggressive way. "It's always from the thief's point of view," he told us. "If you're aggressive like a soldier, you're going to die because the mechanics don't want to see you going into the light."
When asked about the player that wants to play commando-style, Roy said that "it's going to be frustrating for the player." He gave an example of a recent playtest, one that had a Call of Duty fan trying his luck at the game. "Full of arrows, making headshots--he wasn't really enjoying the game," Roy admitted.
Roy says that a key difference between Thief and Dishonored is that the gameplay mechanics sway players away from killing in Thief, while Dishonored uses narrative. "Personally, I think it's easier to play aggressive than full stealth in Dishonored," Roy said. "Thief is much more about stealing and not killing."
Steven Gallagher, narrative director of the game, also chimed in, pointing out that Garrett's weapon is intentionally crafted to steer players away from running-and-gunning. "You can't panic with a bow and arrow," he pointed out. "But you can do aggressive stealth."
To coincide with our interview, Square Enix also offered three minutes of new gameplay footage. Take a look:
BOOM video 16233


text:
More than 50 residents filed into an auditorium at the N.C. Arboretum Thursday to glimpse three designs the N.C. Department of Transportation has for revamping the Interstate 26/N.C. 191 interchange near Biltmore Square Mall.
More than 50 residents filed into an auditorium at the N.C. Arboretum Thursday to glimpse three designs the N.C. Department of Transportation has for revamping the Interstate 26/N.C. 191 interchange near Biltmore Square Mall.
During a drop-in meeting in the Arboretum's Education Center, DOT officials presented conceptual maps of three alternatives designed to expedite traffic flow at the interchange.
All three options would alter the geometry and location of ramps to and from I-26, reducing traffic backups by creating two off-ramps instead of one, lengthening those ramps to store more vehicles before traffic lights change and widening curves to provide faster merging onto the interstate.
Two alternatives – Options C and F – involve an off-ramp heading north on Brevard Road that requires right-of-way within the Biltmore Estate, a difficult and costly proposition given the land's status as a National Historic Landmark, said Civil Engineer Matthew Peach of Moffatt & Nichol, a Raleigh firm involved with the designs.
So a third alternative, Option G, takes the off-ramp further west of the 191 bridge and wraps it around Jim Barkley Toyota before reaching a stoplight on Brevard Road. That option not only avoids the Biltmore Estate, but offers "more stacking areas and more lanes to get traffic through the intersection," Peach said.
In each design, the 191 bridge over I-26 is proposed to be widened to accommodate bike lanes and sidewalks on each side, said Michael Wray, a DOT project planning engineer.
All three alternatives would also require DOT to acquire right-of-way through the middle of three existing businesses on Brevard Road: Ethan Allen Design Center, the Hampton Inn Asheville–I-26 Biltmore Square Hotel and Petco Animal Supplies.
Although no timetable has been set for right-of-way acquisition and construction, the interchange project will likely coincide closely with a proposed widening of I-26, said Undrea Major, a DOT project development engineer. The widening project is scheduled to begin acquiring right-of-way in 2018, he said, with construction starting in 2020.
Thursday's meeting was set up to gauge public reaction to the three alternatives and opinions ran the gamut, Wray said, from those who were delighted with a particular option to those who didn't like any of them.
Asheville resident Claudia Nix fell into the latter camp, telling DOT officials and consultants that a chief cause of problems around the I-26/191 interchange are crashes caused further west at the bottlenecked I-26/I-40/I-240 interchange.
"That interchange needs to be dealt with first because that is awful and lives have been lost there," Nix said.
Dick Wright, who owns 3 acres behind the Hampton Inn, was more sanguine.
"They're going to do what they're going to do," Wright said. "Anything that gets that traffic flow improved is good. It's horrendous through there. If you're not watching, traffic is dead-stopped (on I-26) and you're running 60 miles per hour."
Dwayne and Charlene Harmon, who have lived on nearby Wedgefield Place for nearly three decades, came to see how the project might affect their work commutes.
"We're just wondering what happens during construction because this isn't going to happen overnight," Charlene said. "I go 191 to 40, so it shouldn't be too bad. I very seldom go I-26 in the morning because it's crazy."
Her husband said the couple has seen a lot of changes along 191 in their time there. Over the last 28 years, they've watched as Biltmore Square, K-Mart, Rodeway Inn, Fairfield Inn and Suites and Hampton Inn sprang up in former woods and fields.
"When we moved here, it was a two-lane road," Dwayne said. "Now, thanks to all those motels, it's dangerous. In the last 10 years or so, my son has been hit two times, my father-in-law was hit once and I was hit once."
DOT hasn't put the design maps online yet, but Wray said they will soon. Comments on the interchange project can be emailed to him at email@example.com or mailed to 1548 Mail Service Center, Raleigh, NC 27699-1548.


text:
WASHINGTON — Lower gas costs offset more expensive food and higher rents to keep a measure of US consumer prices flat last month.
The Labor Department said Wednesday that food prices increased 0.2 percent in December from November. Rents and airfares also rose. Gasoline prices fell a seasonally adjusted 2.3 percent.
The flat reading of the December consumer price index caps a year when inflation slowed. Consumer prices rose only 1.7 percent in 2012, down from 3 percent in 2011.
Food prices increased 1.8 percent last year, down from 4.7 percent in 2011. Gas prices rose just 1.7 percent last year. That followed annual gains of nearly 10 percent in 2011 and roughly 14 percent in 2010.
Excluding the volatile food and energy categories, core prices ticked up just 0.1 percent in December compared with November. And core prices rose only 1.9 percent in 2012.
Associated Press


text:
Thursday, Oct. 18, 2012
The Clatsop County Board of Commissioners on Wednesday assembled a broad selection of public and private agency representatives for a wide-ranging conversation about Clatsop County's role in economic development stretching from industry to the arts.
Officials from the Port of Astoria, Clatsop Community College, Astoria-Warrenton Chamber of Commerce, county departments, local, regional and state economic development entities and other groups discussed their own organizations' roles, ways they can improve collaboration and cooperation, as well as policies of the county that can impact their efforts.
Enterprise zones, infrastructure improvements, housing and health were all part of the discussion, which was designed not as a planning session but a sharing of information about the tools available locally, according to Board of Commissioners Chair Peter Huhtala, who told participants their input will prove useful when the board meets to discuss future goals.
"We have no illusions that government creates jobs, but we set the stage," he said.
Chamber Director Skip Hauke said at one time no fewer than 21 different entities had some role in economic development in the county. The chamber, in an effort to better focus those groups' work and revitalize its own lagging efforts, pushed for the formation of a Clatsop Economic Development Resources (CEDR), a collaborative project of the chamber, community college and the county, which provides $60,000 a year to the organization.
Kevin Leahy, director of CEDR and the college's Small Business Development Center, explained CEDR's mission of retaining, expanding and recruiting business, and noted that local statistics for job-creation and business counseling are up sharply while the rest of the state remains flat.
Clatsop Community College serves as a conduit for many other entities through partnerships with local hospitals and other programs, said President Larry Galizio. The college itself brings money into the area through the 39 percent of students who come from outside Clatsop County, he added.
Port of Astoria Property Manager Mike Weston said the port is teaming with regional and state economic development agencies and actively pursuing funding for major improvements to its pier facilities and Tongue Point, while also tackling 20 years of deferred maintenance. "Any investment in the port comes back 10 times what we put in," he said.
Commissioner-elect Sarah Nebeker and her husband Royal Nebeker, who sits on the Oregon Arts Commission, spoke on the economic impact the arts can have locally by boosting the quality of life and enhancing education. The county, with leadership by the county and other governing bodies, could obtain up to $100,000 in state funding for arts-promotion, they said.
Clatsop County Public Works Director Ed Wegner noted that the county, after a long period focused on maintenance, has in the past few years tackled a number of large capital projects directly related to economic development, including the extension of Ensign Lane in the North Coast Business Park, a fix to the yearly flooding of Highway 101 south of Seaside that is currently out for bid, and a community development plan for Westport.
Community Development Director Hiller West said the department strives to make its mandated regulatory processes as smooth as possible for developers. The department has also tackled long-range projects like Westport plan, as well as the recently completed Joint Land Use Study with Camp Rilea. An inventory of buildable lands has been made available on the internet to positive response from builders.
Released by:
Tom Bennett
Community Relations Coordinator
(503) 338-3622


text:
Love her or hate her, Miley Cyrus has been the one to watch in 2013. And she got at least one stamp of approval Tuesday when she was named MTV's Best Artist of 2013.
How exactly did that happen? Criteria includes album and single sales, touring, airplay, social media and overall impact.
Cyrus definitely twerked her way to the top of the music scene this year. Her MTV Video Music Awards performance with Robin Thicke easily ranked as the most watched video of 2013. According to Vevo rankings, she also locked in the top two spots for most commonly viewed music videos of the year with "Wrecking Ball" and "We Can't Stop." Plus, she had a very public breakup with fiance Liam Hemsworth and a not-so-small verbal feud via social media with Sinead O'Connor. She also attracted the most clicks for artists on MTV.com
Macklemore and Ryan Lewis finished second for best artist, followed by Justin Timberlake, Kanye West and One Direction.
Expect Kanye West to lodge a complaint for landing at No. 4. It would be a welcome distraction from his complaints of late about equipment issues on his tour or) fiance Kim Kardashian getting dissed (by Hollywood Walk of Fame, Vogue, etc.)


text:
Alright peeps, I need some help
Decided to get rid of my two Cadence 8's and go back to a single 15. I really miss the low bass. Now my enclosure is 3.25cu.ft net tuned to 35hz. I ran a single Obsidian 15 in this enclosure and managed a 143.7 on a termlab. But that was also off an RE Audio DTS1500.1 which maxed at 965 watts.
I have the Soundstream Rubicon 2500.1d amp. Looking to go back to the 15. And Obsidian V2 is on my list right now.
Throw me some ideas in that price range $160-200 shipped that will work in that enclosure.
I will get a trade thread started next week for the two Cadence S2W8's


text:
5 to 8 p.m.
More than 20 downtown galleries open the doors to evening strollers during the Third Thursday ArtWalk, a free monthly affair from 5 to 8 p.m. Tipple and treats greet gallery-goers, as do the full gamut of Jackson art, from traditional wildlife and landscape art (Trailside Galleries, Legacy Gallery and Astoria Fine Art) to New West works (Altamira Fine Art), from modern masters (Heather James Fine Art) to contemporary stars (Tayloe Piggott Gallery and Diehl Gallery).
8 p.m.
Snake River Grill could be transplanted to any city in the world and rival its urban peers. Helmed by chef Jeff Drew, the Grill, as locals call it, serves haute fare with creative Western winks: sweet onion rings come stacked on a branding iron. Daily specials spotlight Drew's unending imagination, and every meal should end with Eskimo Bars, the hand-dipped caramel and chocolate ice cream bars that the Food Network spotlighted on its show, "The Best Thing I Ever Ate."
10 p.m.
The Lower East Side has Death & Co. Chicago has the Violet Hour. And Jackson has the Rose – a speakeasy-style craft cocktail lounged tucked upstairs at the recently reopened Pink Garter Theatre. Channeling the Pink Garter's playhouse past, the Rose juxtaposes dramatic details – velvet wallpaper, crystal chandeliers, red tufted booths – with creative concoctions like the Kill Devil Hills, a lush layering of ingredients – buffalo trace bourbon, Campari, oleo saccharum, black tea, angostura bitters, sparkling wine and freshly grated nutmeg – that can come in a punch bowl. Delicious flatbreads complement the cocktail menu. Across the lobby, the Pink Garter hosts a rotating roster of touring bands.
8 a.m.
Rise early to snag a table at Nora's Fish Creek Inn, a Wilson depot recently recognized as an "American Classic" by the James Beard Foundation. Trout and eggs, huevos rancheros and short stack of pancakes make for a hearty start to the day.
10 a.m.
Venture into Grand Teton National Park via the Moose-Wilson Road, a windy roadway shaded by lodgepole pines. Along the way, you'll pass two trailheads – Granite Canyon and Death Canyon (most conveniently accessed through the Laurance S. Rockefeller Preserve). Answer their call to action, park and go hiking. Granite can be explored to the west and south – the latter loops back to Teton Village – while Death Canyon leads to Phelps Lake and higher points like Rimrock Lake. Check in with the park ranger at the park entrance for a map and conditions. Pack a picnic from Aspens Market on the Westbank or Persephone Bakery in downtown Jackson.
5 p.m.
Rarely does pizza come with an unparalleled view as it does at Dornan's Pizza and Pasta Company in Moose. Somehow, the picture window behind the bar pulls the Teton panorama closer. Overlooking the expanse of Grand Teton National Park, Dornan's attracts a wide array of patrons, from mainstays of the Monday night Hootenannies to mountaineers celebrating a summit ski. Dornan's menu features fresh, hearty fare, and the adjoining Wine Shoppe stocks a top-notch selection of varietals that can be uncorked and enjoyed next door.
8 p.m.
For 51 summers, the Grand Teton Music Festival has recruited the nation's finest classical musicians to spend the summer at the base of Rendezvous Mountain. Under the visionary leadership of Music Director Maestro Donald Runnicles, the Music Festival stages concerts Tuesdays through Saturdays, July 4 through August 16. With chamber concerts and creative spotlights filling weekday nights, the weekends bring large-scale orchestral concerts – all within the world-class setting of Walk Festival Hall in Teton Village. For the full schedule, visit www.gtmf.org.–
9 a.m.
Café Genevieve honors the history within its walls as the turn-of-the-century log cabin home of Genevieve Van Vleck, one of five women elected to the Jackson Town Council in 1920, a group known as the "Petticoat Government," the first all-female municipality in the U.S. Chef Joshua Governale, who cut his teeth at esteemed establishments like the Coyote Café, features regional ingredients in dishes rich with New Orleans flare. Brunch favorites includes waffles and fried chicken, fried green tomatoes eggs benedict and the Bueno Burger, a juicy patty topped with housemade green chili, a fried egg and cheddar cheese.
11 a.m.
National Museum of Wildlife Art
Twenty five years ago, valley residents Bill and Joffa Kerr decided to share their wildlife art collection, and with friends, opened the Wildlife of the American West Art Museum on the Town Square. Outgrowing the space, the museum moved into a stunningly craggy structure that blends into the butte overlooking the National Elk Refuge, just north of town. In 1994, the U.S. Congress bestowed national status on the museum, recognizing it as the definitive site to see wildlife art in the country. Winter exhibitions include Wildlife of the American West: Works on Paper from the Original Collection and National Geographic Greatest Photographs of the American West.
2 p.m.
After satiating your aesthetic side, enjoy a late lunch at one of many downtown eateries. For a burger, visit Local Restaurant or McPhail's. For Thai cuisine, choose from Thai Me Up, Thai Plate and Bon Appe Thai. For a pub fare, visit Snake River Brewpub or the Wort Hotel. Primo slices can be found at Pizzeria Caldera and Pinky G's Pizzeria. Sandwiches are high art at Backcountry Provisions and Creekside Market. Sweetwater Restaurant cultivates a homey ambiance and fare, while Lotus Café makes healthy food truly tasty. Taqueria Sanchez and Pica's Mexican Taqueria both feature excellent Mexican food. Creative cafes – with decks no less! – include: Persephone Bakery's new café and boulangerie, where artisanal breads take center stage; Shades Café with its paninis, soups and salads; and the aforementioned Café Genevieve. With so many tasty menus to choose from, you may have to extend your Teton stay to make room for more meals.


text:
In a study recently published by comScores recent MobiLens report, BlackBerry is said to have kept the biggest percentage of users in the United Kingdom from going to another manufacturer at the time of their upgrade. Research In Motion's BlackBerry smartphones retained 69.9% percent of its users over the study 3 month study period ending in July of 2011, topping Apple's iPhone (65.2%), and HTC (48.1%) as well. The bar graph above illustrates the top 6 manufacturers on this report.
- What do you think makes BlackBerry so successful in the United Kingdom? Sound off in the forums!


text:
Kerry's performance hit rock bottom when he struggled to keep up with Obama's latest position on offshore oil drilling:
MR. BROKAW: Let's, let's talk about energy for a moment, if we can, because there have been several developments this past week that are important. A bipartisan coalition of 10 senators...What?!
SEN. KERRY: Yes.
MR. BROKAW: ...five Democrats, five Republicans--want to expand offshore drilling and they want to end a tax credit on oil companies. Senator Obama, in the past, has often said that he's opposed to offshore drilling.... Now, having said that, here's what Senator Obama had to say over the weekend: "My interest is in making sure that we've got the kind of comprehensive energy policy that can bring down gas prices. ... If, in order to get that passed, we have to compromise in terms of a careful, well thought-out drilling strategy that was carefully circumscribed to avoid significant environmental damage--I don't want to be so rigid that we can't get something done." I can already hear the bloggers saying, "Flip-flop." Here's a guy who just...
SEN. KERRY: Sure.
MR. BROKAW: ...a couple of months ago said, "No way we're going to do this," now he's opened the possibility of it again. Two weeks ago on this program Vice President Al Gore, who's the godfather in the Democratic Party of energy policies, said, "No way should we drill offshore."
SEN. KERRY: I agree with Al Gore, and I don't want to. But, but Barack Obama...
MR. BROKAW: You, you--so you don't agree with Senator Obama?
SEN. KERRY: Well, I don't agree--here's, here's what I think his position is demonstrating. He still believes we should not drill offshore.
MR. BROKAW: But he's prepared to do it if necessary.What?! So you're saying that Obama's newest statements on the subject are just some meaningless politicking that you won't even pretend to believe temporarily while he gets himself elected?
SEN. KERRY: He has not changed--what he's prepared to do, Tom, is break America's gridlock by honoring a bipartisan effort if that is the only way to move us towards alternative and renewable fuels and, and, and an energy policy that's comprehensive. I think what you see in the response on this drilling is really the difference in how they might govern. Barack Obama doesn't want to drill offshore, doesn't believe it's the thing to do.
There's a very--there's a four-state carefully circumscribed proposal in that, that, in that initiative that, that could conceivably allow some drilling.that, that... that, that...
Can anyone listen to this part? Kerry gives off the signal that he's going to blather and smokescreen and do that thing his erstwhile fans called "nuance" in 2004.
could conceivably allow some drilling....
But what? But we shouldn't believe it will lead to any drilling?
He doesn't want to do that.He doesn't? So Obama muddied his position, opened himself up to the accusation that he's flip-flopped, and the take away point really is just that he doesn't want drilling? Thanks a lot, Kerry.
Obama, do not send Kerry out to represent you again. He's terrible.
But if that's what gets us to the energy independence and to the other efforts, I think Joe Lieberman actually supports--now, he didn't support drilling. He's changed and moves in that direction."He" — who? I can't even tell if he's talking about Obama or Lieberman. So the point is, I think, that Obama wants to get some legislation through and he's willing to accept some provision that happens to be in it because it only opens a possibility of drilling, and he doesn't support drilling? I thought Obama wanted people to think he was open to offshore drilling, but Kerry is squelching that belief. How is Kerry trying to help Obama?
But here's the bottom line.Go to the transcript for the news that oil companies make too much money and need to be taxed more. Let's skip a step ahead, and pick up in the middle what Lieberman's saying when he gets the floor again:
... John McCain says we need to drill offshore. That's American oil, we need to bring it into the market to help lower gas prices and make us energy independent. Barack Obama says, this weekend, maybe, and, and, if, but. He did not endorse--he did not come out with a strong decision, Obama, and say, "I'm for offshore drilling." And I predict to you he'll find reasons not to be for it if this comes to a vote in the Senate.Oh, so Kerry was talking about Lieberman before. That's a distraction. We're talking about Obama and McCain, aren't we? Or is Kerry more concerned about the Senate-level debate about what legislation gets passed?
SEN. KERRY: Are you for it now? Have you changed?
SEN. LIEBERMAN: I am for it...
SEN. KERRY: You've changed.
SEN. LIEBERMAN: ...because of the crisis. That's...Is this helpful to Obama, who's been reframing his position?
SEN. KERRY: You're now for it.
SEN. LIEBERMAN: ...absolutely right, because of the facts.
I want to take a minute from a personal perspective...
MR. BROKAW: Are you--you're--and you're not for it, Senator Kerry, under any circumstances.
SEN. KERRY: It is an absolutely fraudulent offering to America.
SEN. LIEBERMAN: It, it is not.Yes, exactly! Kerry is being a Senator. Has he forgotten his role of helping Obama? But he wasn't invited onto "Meet the Press" to do his Senate work.
SEN. KERRY: Drilling--let me tell you why. We only...
SEN. LIEBERMAN: My buddy here is filibustering this morning.
SEN. KERRY: We only have, we only have 3 percent of the world's oil reserves. Sixty-five percent of the oil comes from the Mideast. The problem with global climate change is oil. The problem for our security is our dependency on oil.The same old Democratic talking points... I thought Obama trying to get away from that.
MR. BROKAW: So what you're saying...
SEN. KERRY: If we go out and drill more oil, even temporarily, when it doesn't come to the pump for about seven years, you're not dealing with the real crisis, which is moving America's innovation...
SEN. LIEBERMAN: Well...Yes, let's move on, now that Joe Lieberman has just done a triumphant 2-part dance on the supine carcass of John Kerry. And that's it for the discussion of oil drilling. Is Brokaw playing it straight, biased against Obama, or just painfully aware that John Kerry is pathetically incapable or perversely unwilling to help Barack Obama?
SEN. KERRY: ...and creativity, the creation of new fuel.
SEN. LIEBERMAN: ...here, here's the difference. Here, here's the difference. Senator Obama, Senator Kerry say no to offshore drilling, no to nuclear power and...
SEN. KERRY: No, I don't say no to nuclear power.
SEN. LIEBERMAN: OK, hold on. Senator Obama certainly does. John McCain says we got to have all of the above. In the short term, we need to drill for American oil where we can find it and get it safely. That's offshore. Secondly, John McCain has presented--and we need nuclear power. Secondly, John McCain has presented the most bold alternative energy--wind, solar, electric car, hydrogen car--proposals that are around today.
I want to say just a word about the, the racial question here. And I, I speak personally. In the first place, the McCain campaign is, to use Barack Obama's words, raising the question is he a risky guy? But it has nothing to do with his name or his skin color. It has to do with his lack of experience and bad judgment, his unreadiness to be president. When you use the expressions that Senator Obama did three times this week, you're making a personal insult to John McCain.
I, I know John McCain. I've been with him for 20 years, private and public. This man does not have a bigoted bone in his body. His wife and he adopted a baby from Bangladesh, who, who they love. It's just wrong for Senator Obama to have done that. It was right for the campaign to call him on it. Let me just add a final word, Tom. In 2000, Al Gore gave me the extraordinary honor of being the first Jewish-American to run for national office, and Al Gore said he had confidence in the American people that they would judge me based on my record, not on my religion. And I urge Barack Obama to have the same faith in the American people that they will judge him on his record, or lack of record, certainly not on his name or his race.
MR. BROKAW: All right. We want to move on if we can.


text:
I have configured the appropriate proxy settings to browse HTTP and HTTPS page however am having no luck browsing any pages that utilize SSL e.g. https://encrypted.google.com/. It simply displays the error
Network Timeout
The operation timed out when attempting to contact encrypted.google.com.
What else do I need to update or change?


text:
SYS-CON.TV Webcasts
Did you read today's front page stories & breaking news?
Today's Top SOA Links
From the Wires
Rentrak Announces Top Ten Movies-On-Demand Titles Week Ending December 9, 2012
By: PR Newswire
Dec. 14, 2012 06:20 PM
PORTLAND, Ore., Dec. 14, 2012 /PRNewswire/ -- Rentrak Corporation (NASDAQ: RENT) today announced the top ten movies-on-demand titles based on consumer transaction rate. Movies-on-demand are transactional (pay-per-purchase) films available through cable and telco providers.
According to the company's OnDemand Essentials service, the top ten most-viewed titles, per data collected from December 3, 2012 through December 9, 2012 include:
About OnDemand Essentials®
About Rentrak Corporation
(Logo: http://photos.prnewswire.com/prnh/20111007/MM82941LOGO)
SOURCE Rentrak Corporation
Web 2.0 Latest News
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
SYS-CON Featured Whitepapers
Most Read This Week


text:
There are a couple sites that claim to offer the greatest college porn films, but they are not even absolutely free. The quality is not of high and the website is not kept updated everyday.The only website that you have to view is SLUTLOAD as they have good quality porn films downloads for absolutely free. The college students are gorgeous and extremely kinky! They are definitely excited to do anything that comes their way.
Who says college students don't know how to have crazy and wild sex? This website is amazing because they also offer several kinds of porn as will; such as MILF, lesbian and a bunch more. Do not waste your time on any other website as you definitely know they are not going to offer you what you are truly looking for. If you need to watch freaky babes getting their juice boxes pumped into rough and enjoying every moment then you know where you need to check out. Think about it, where else can you see neat absolutely free porn films at besides at SLUT LOAD?


text:
Japan stocks rise on weak yen, strong earnings
(7:21 PM ET) LOS ANGELES (MarketWatch) -- Fresh losses for the Japanese yen helped send Tokyo stocks higher early Friday, with the Nikkei Stock Average(JP:NI225)rising 0.4% to 11,186.71, while the Topix added 0.6%. With the dollar hitting highs not seens since June 2010, exporter shares climbed, with Honda Motor Co.(JP:7267) HMC, -1.05% adding 1.4% despite cutting its earnings forecast for the year ending March 31. Other auto makers also gained amid the falling yen, with Toyota Motor Corp.(JP:7203) TM, -1.87% up 1.6%, Mitsubishi Motors Corp.(JP:7211) MMTOF, +0.13% ahead by 2.1%, and Mazda Motor Corp.(JP:7261) MZDAF, -4.22% improving by 2.9%. Shares of Sharp Corp.(JP:6753) SHCAF, -1.00% rallied 4.2% after a Nikkei news report that strong smartphone earnings allowed it to swing back to an operating profit in the October-December quarter. Softbank Corp.(JP:9984) SFTBF, -0.76% advanced 2.9% on the back of posting an October-December profit double that of a year ago, even as it said its planned deal to buy Sprint Nextel Corp. S, -0.19% would weigh on earnings for about a year after such a deal closes. Strong results also sent NEC Corp.(JP:6701) NIPNF, +16.28% jumping 5.4%. However, a surge in profit for Nomura Holdings Inc.(JP:8604) NMR, -0.93% failed to help its shares, which traded 0.8% lower, while rival Daiwa Securities Group Inc.(JP:8601) DSECF, +6.26% climbed 2.1%. Industrial major Fanuc Corp.(JP:6954) FANUF, +1.55% lost 1.1% after the Japan Robot Association said sales of industrial robots fell in the last quarter.
NetSuite loss widens, but sales surge
(4:18 PM ET) SAN FRANCISCO (MarketWatch) - NetSuite Inc. N, -3.29% on Thursday reported fourth-quarter loss of $9.62 million, or 13 cents a share, compared with a loss of $7.62 million, or 11 cents a share, for the year-earlier period. Revenue rose to $85 million from $64.09 million. On an adjusted basis, the company reported a profit of 6 cents a share. Analysts polled by FactSet on average were expecting the business software company to report a profit of 4 cents a share, on revenue of $83 million. Shares of NetSuite were up 4% in after-hours trading.
Constellation says Crown deal to be delayed
(12:06 PM ET) NEW YORK (MarketWatch) -- Constellation Brands Inc. STZ, -0.07% said Thursday it no longer expects to close its acquisition of Crown Imports during the first calendar quarter of 2013. The update on the deal came after the Department of Justice sued to block Anheuser-Busch InBev's BUD, -1.08% proposed takeover of brewer Gupo Modelo GPMCY over antitrust concerns. Constellation said it's "disappointed" by the development but "we ultimately look forward to an expeditious resolution." Constellation said the proposed transaction "would further establish Crown Imports as a more independent and competitive entity and solidify its position as a major player in the U.S. beer industry." Shares of Constellation fell 18.6% to $31.90 in recent trades. Constellation has bid to acquire Modelo's stake in Crown Imports LLC, the importer of Corona beer.
Pitney Bowes shares jump on earnings beat
(10:47 AM ET) SAN FRANCISCO (MarketWatch) -- Pitney Bowes Inc. PBI, +0.69% shares surged nearly 19% in early trades Thursday after the company turned in fourth-quarter results that were better than feared. It also said it will sell its struggling international mail business, part of a wider plan to consolidate the business, cut costs and concentrate on more profitable operations. Before the open, the mail-and-document services company said earnings fell 56% to 55 cents a share, but that topped the 51 cents analysts expected. Other surprises included 5% revenue gains for its software and management services business, offsetting lower sales in its traditional mailing services business. Pitney Bowes stock was the No. 2 percentage gainer in the S&P 500, last trading 16% higher at $13.90. It's up nearly 30% since the start of the year.
JDS Uniphase jumps following results, upgrade
(10:34 AM ET) SAN FRANCISCO (MarketWatch) -- Shares of JDS Uniphase JDSU jumped more than 18% to $14.74 on Thursday morning. The prior afternoon, the maker of telecommunications networking equipment swung to a profit for the second fiscal quarter, beating expectations. It also projected a revenue range for the current period that was slightly above analysts' forecasts. Alex Henderson of Needham & Co. upgraded the stock to a buy rating, "based on improved visibility on the timing and scope of this improvement and JDSU's ability to benefit," referring to expected upgrades in capital spending by telecommunications carriers. His price target on the stock is $18.
Citrix shares jump on results, upgrade
(10:25 AM ET) SAN FRANCISCO (MarketWatch) -- Shares of Citrix Systems CTXS, -0.01% jumped more than 11% to $74.36 on Thursday morning. The prior afternoon, the enterprise software company reported double-digit revenue gains for the fourth quarter, beating expectations. It also projected a revenue range for the current period that was above analysts' forecasts. "As enterprises build out cloud-like data centers and mobilize their workforces (BYOD), we believe Citrix is in a unique position to benefit from this secular trend and experience solid growth for its product family outside its core Desktop [products]," wrote Kash Rangan of Bank of America/Merrill Lynch, who upgraded the stock to a buy rating and raised his price target to $84 from $74.
Fusion-io shares fall 13%; order delays are blamed
(9:53 AM ET) SAN FRANCISCO (MarketWatch) -- Fusion-io Inc. FIO shares fell more than 13% Thursday to $17.48 after the memory-technology company cut its fiscal-third quarter and full year revenue estimates. Fusion cited delays in orders from Apple Inc. AAPL, +0.23% and Facebook Inc. FB, -0.54% as the main reasons for its new outlook. Fusion now expects to report third-quarter revenue of $80 million, while analysts surveyed by FactSet had forecast sales of $137.1 million. For its entire fiscal year, Fusion estimates it will report sales between $420 million and $440 million, down from an earlier forecast of $521 million to $539 million.
Facebook, BlackBerry lead tech stocks down
(9:37 AM ET) SAN FRANCISCO (MarketWatch) -- Tech stocks mostly fell in early trades on Thursday, with Facebook Inc. and the company now known as BlackBerry leading the declines. Facebook FB, -0.54% fell more than 6% as several brokers downgraded the stock following its fourth quarter results, which included a forecast for heavy spending in 2013. BlackBerry, which still trades under the name Research In Motion RIMM slid more than 9% after Credit Suisse downgraded the stock to underperform. Fusion-io FIO slid more than 13% after several downgrades that followed its own quarterly report. Qualcomm QCOM, +1.49% was a rare gainer, picking up more than 5% following better-than-expected results. The Nasdaq Composite COMP, +0.13% fell fractionally to 3,140 while the Philadelphia Semiconductor Index SOX, +0.88% fell 0.2%.
Dunkin' Brands Q4 net triples; dividend up 27%
(9:12 AM ET) TEL AVIV (MarketWatch) -- Dunkin' Brands Group Inc., DNKN, -0.84% the Canton, Mass., parent of Dunkin' Donuts and Baskin-Robbins ice-cream stores, reported that fourth-quarter net income tripled on 4% lower revenue, and it lifted its quarterly dividend 27%. Profit reached $34.3 million, or 32 cents a share, from $11.6 million, or 10 cents, in the year-earlier quarter. The latest adjusted earnings were 34 cents a share. Revenue slipped to $161.7 million from $168.5 million. A survey of analysts by FactSet produced consensus estimates of profit of 33 cents a share on revenue of $170.7 million. For the quarter, U.S. comparable-store sales were up 3.2% at Dunkin' Donuts and 1.5% at Baskin-Robbins. For both chains, overseas comparable-store sales were flat. For 2013, Dunkin estimates that it will earn an adjusted $1.48 to $1.51 a share, up as much as 18% from 2012. FactSet's survey is looking for $1.52. Dunkin' Brands expects 2013 U.S. same store sales up 3% to 4% at Dunkin' Donuts and 1% to 3% at Baskin-Robbins. Separately, the board lifted the quarterly dividend to 19 cents a share from 15 cents, payable Feb. 20 to holders of record Feb. 11.
Flu shots drive up Rite Aid prescription count
(8:40 AM ET) NEW YORK (MarketWatch) -- Rite Aid Corp. RAD, +0.00% said Thursday its January same-store sales increased 0.3%. Total drugstore sales for the four-week period decreased 0.5% to $1.91 billion. Prescription count at comparable stores increased 5% over the prior-year period, of which 3.4% was attributable to flu-related prescriptions and flu shots, Rite Aid said.
Sherwin-Williams profit up sharply
(8:27 AM ET) NEW YORK (MarketWatch) -- Sherwin-Williams SWC, -0.97% said Thursday its fourth-quarter profit rose to $117.2 million, or $1.12 a share, from $14.6 million, or 14 cents a share, in the year-ago quarter. The paint maker's revenue increased to $2.22 billion from $2.07 billion. Wall Street analysts expected the company to earn $1.15 a share on sales of $2.19 billion, according to a survey by FactSet. Looking ahead, the company expects a first-quarter profit of $1.03 to $1.13 a share, compared to the analyst estimate of $1.09 a share. For 2013, the company expects earnings of $7.45 to $7.55 a share, against the Wall Street forecast of $7.93 a share. Sherwin-Williams shares fell 2.7% in premarket trades.
MasterCard proft rises 18%
(8:14 AM ET) NEW YORK (MarketWatch) -- MasterCard MA, -0.39% said Thursday its fourth quarter profit for 2012 was up by 18%. The company reported net income of $605 million or $4.86 a share. Wall Street analysts expected the credit card company to earn $4.80 a share according to a survey by FactSet. The credit card company said net revenue for the fourth-quarter was $1.9 billion, an increase of 10% compared to a year earlier. The world's second biggest payments network reported an increase in processed transactions of 20% to 9.2 billion. MasterCard reported cross-border volumes were up 17% in the fourth-quarter. MasterCard shares are up in trading before the opening bell and have been up more than 45% in the last 12 months.
UPS swings to loss on $3 bln non-cash charge
(7:57 AM ET) NEW YORK (MarketWatch) -- United Parcel Service Inc. UPS, -0.12% said Thursday it swung to a fourth-quarter loss of $2.78 billion, or $1.83 a share, from a profit of $1.2 billion, or 74 cents a share, in the year-ago period. The delivery service booked a non-cash, mark-to-market charge of $3 billion in the latest quarter related to pension and post-retirement pension plans. Adjusted profit totaled $1.32 a share. UPS said Hurricane Sandy subtracted 5 cents a share from profit. Revenue increased to $14.57 billion from $14.17 billion. Wall Street analysts expected UPS to earn $1.38 a share on sales of $14.48 billion, according to a survey by FactSet. Looking ahead, UPS said it increased its 2013 share repurchase target to $4 billion from $1.5 billion. UPS said it expects 2013 diluted earnings per share to increase 6% to 12% over 2012 adjusted results. Shares of UPS fell 1.6% in premarket trades.
Hershey's profit rises 5.6%
(7:49 AM ET) NEW YORK (MarketWatch) - Hershey Co. HSY, +0.39% posted a fourth-quarter profit of $150 million, or 66 cents per diluted share, compared with $142 million, or 62 cents a share. Adjusted earnings totaled 74 cents a share. The company said its revenue was $1.75 billion compared with $1.57 billion. Analysts expected earnings of 76 cents a share, according to a survey by FactSet. The Hershey, Pa.-based chocolate company said its 2013 annual diluted earnings per share will be between $3.47 and $3.56.
Altria Group profit rises 32%
(7:28 AM ET) NEW YORK (MarketWatch) - Altria Group Inc.'s MO, -0.47% fourth-quarter profit rose to $1.1 billion, or 55 cents a share, from $836 million, or 41 cents a share. Adjusted earnings in the latest quarter totaled 55 cents a share. The Richmond, Va.-based maker of Marlboro cigarettes said quarterly net revenue was $6.2 billion compared with $6.1 billion. Analysts polled by Factset had expected earnings of 54 cents a share. "Despite a continuing, challenging external environment, our tobacco operating companies' premium brands had an excellent year as our companies continued investing in their long-term success," said Marty Barrington, chief executive officer. Altria said its 2013 annual diluted earnings per share will be between $2.34 and $2.40.
Dow Chemical loss widens on restructuring costs
(7:26 AM ET) NEW YORK (MarketWatch) -- Dow Chemical Co. DOW, -0.98% said Thursday its fourth-quarter loss widened to $716 million, or 61 cents a share, from a loss of $20 million, or 2 cents a share, in the year-ago period. Dow booked $986 million in restructuring costs during the quarter. Adjusted profit totaled 33 cents a share. Sales at the company fell 1% to $13.92 billion. Wall Street analysts expected Dow Chemical to earn 34 cents a share on sales of $13.73 billion, according to a survey by FactSet.