<?php
//1. how to use mail function
//create short variable names
$name=$_POST['name'];
$email=$_POST['email'];
$feedback=$_POST['feedback']; //set up some static information
//$toaddress = "feedback@example.com";
$toaddress = "luoxu@qq.com"; $subject = "Feedback from web site"; $mailcontent = "Customer name: ".filter_var($name)."\n".
"Customer email: ".$email."\n".
"Customer comments:\n".$feedback."\n"; $fromaddress = "From: webserver@example.com"; //invoke mail() function to send mail
mail($toaddress, $subject, $mailcontent, $fromaddress); //2.Trimming Strings chop(), ltrim(), trim()
$str= "inert air ";
echo $str;
$str = trim($str);
chop($str);
echo "<br>"; //3. htmlspecialchars() conflict with html tags $new = htmlspecialchars("<a href='test'>Test</a>");
echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt; $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt;
echo nl2br("foo isn't\n bar"); //foo isn't<br />bar translate \r\n to <br>
echo nl2br(htmlspecialchars($feedback)); // it will display as newline(line feed)we should use them in this order
echo htmlspecialchars(nl2br($feedback)); //it will display <br> literally
echo '<hr>'; //4.output string
$total =12.345565;
echo "The total amount of order is $total";
printf("The total amount of order is %s ",$total ); //output a formatted string
printf("The total amount of order is %.2f ",$total ); //output a formatted string 12.35
$s =sprintf("The total amount of order is %+s",$total ); // return a formatted string
echo $s;
echo '<hr>'; //5.String case function
$str = "feedback from Website luoxu" ;
echo strtoupper($str);
echo strtolower($str);
echo ucfirst($str); //Feedback from Website luoxu
echo ucwords($str); //Feedback From Website Luoxu
echo "<hr>"; //6.Joining and Spliting Strings with string function
$email = "luoXU@qQ.coM";
$emailArr= explode('@',$email);
print_r($emailArr); //Array ( [0] => luoXU [1] => qQ.coM )
if(strtolower($emailArr[1]) == 'qq.com'){
$toaddress = 'bob@example.com';
}
array_walk($emailArr,"toLowerCase");
function toLowerCase(&$value ){ // needs to add & in front of $value which will affect the $emailArr
$value = strtolower($value);
}
print_r($emailArr); //Array ( [0] => luoxu [1] => qq.com )
$newEmail = implode('@',$emailArr);
echo $newEmail; //luoxu@qq.com //7.strtok()
$str = 'Hello to all of Ukraine'; //split the string with ' ' delimiter as the first substring(token),
// for the second token, you only need to pass the delimiter,
//because strtok() keeps its own internal pointer to its place in the string
echo strtok($str, ' ').' '.strtok(' ').' '.strtok(' '); //Hello to all $string = "This is\tan example\nstring";
/* Use ' ' as tokenizing characters as well */
$tok = strtok($string, " "); while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" ");
}
//Word=This
//Word=is an
//Word=example string /* Use tab and newline as tokenizing characters as well */
$tok = strtok($string, " \n\t"); while ($tok !== false) {
echo "Word=$tok<br />";
$tok = strtok(" \n\t");
}
//Word=This
//Word=is
//Word=an
//Word=example
//Word=string
echo "<hr>"; //8.substr()
$test = 'Your customer service is excellent'; //string position starts from 0
echo substr($test,1); //our customer service is excellent
echo substr($test,-9); // excellent
echo substr($test,5,4); //cust
echo substr($test,5,-13); //customer service
echo $test[1]; //o, we can take a string as a array
echo "<hr>"; //9.Comparing Strings
$str1 = "hello";
$str2 = "hello";
$str3 = "aello";
$str4 = "Hello";
echo strcmp($str1,$str2); //0
echo strcmp($str1,$str3).'<br>'; //return a number that is greater than 0 if str1 > str2 alphabetically
echo strcmp($str1,$str4); // H < h in ASCII a number that is greater than 0
echo strcasecmp($str1,$str4).'<br>'; //0
$str5 ='6';
$str6 = '12';
echo strcasecmp($str5,$str6); // result = str6 - str5 ASCII value return 5
echo strnatcmp($str5,$str6); // result = str6 - str5 integer value return -1
echo strlen($str1); //5
echo "<hr>"; //10. Matching and Replacing substring with string function
$email = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com $user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
echo stristr($email,M); //me@example.com
echo stristr($email,M,true); //na
echo strchr($email,'e'); //e@example.com
echo strpos($email,'m'); //2 starts from 0, the position first occurrence of the needle
echo strrpos($email,'m'); //15 starts from the end , the position first occurrence of the needle reverse
$result = strpos($email,'A'); //not found return false
if($result === false){ //($result == false)is wrong,
// because if we find 'n' in the string , it returns 0, however (0 == false) is true
echo 'not found';
}else{
echo "Found at position:".$result;
}
echo "<hr>"; //11.str_replace();
$bodytag = str_replace("%body%", "black", "|body text='%body%'|");
echo $bodytag; //|body text='black'|
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
echo $onlyconsonants;//Hll Wrld f PHP
//If search and replace are arrays, then str_replace() takes a value from each array and uses them to search and replace on subject.
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase);
echo $newphrase; //You should eat pizza, beer, and ice cream every day $str = str_replace("ll", "", "good golly miss molly!", $count);
echo $str; //good goy miss moy!
echo $count; //2 2 of 'll' was matched
echo "<hr>"; //replace the substr of string with replacement.take substr_replace('bananas','xyzZ',1,2) as an example
//1. get the substr of the string removing the parts from start to end(length=end-start) substr = b(an)anas, an is removed
//2. insert replacement into substr from start position 1.
echo substr_replace('bananas','xyz',1); //bxyz replace the substr of bananas starting from 1 with xyz
echo substr_replace('bananas','xyzZ',1,2); //bxyzZanas replace the substr of bananas starting from 1 to 3(length is 2) with xyz
echo substr_replace('bananas','xyz',-1); //bananaxyz replace the substr of bananas starting from 1 to 3(length is 2) with xyz
echo substr_replace('bananas','xyz',-1,-2); //bananaxyzs
echo substr_replace('bananas','xyz',4,1); //bbanaxyzas //12.Regular Expression (better to use double quotation mark for strings) less sufficient than string function with similar functionality
//https://regex101.com/ for testing regex
//delimiter: /pattern/ or #pattern#
// using backslash \ to escape / eg: /http:\/\//
//Character Class and Type
//1. /.at/ . means matching a single character, eg:cat,mat,#at,
// /.[a-z]/ when a dot is used at the beginning or end of a Character class, it loses its special wildcardmeaning and becomes just a literal dot
//2. /[a-z]at/ [] means matching a a single character in the square bracket that belongs to a-z ,eg: apple
//3. /[^a-z]at/ ^ (caret) in the square bracket means not to matching any of a single character that belongs to a-z
//4. [[:alnum:]] means alphanumeric character
//4. [[:lower:]] means lower case letters
//5. [[:alpha]1-5] means a class that may contain an alphabetically character or any of the digits from 1-5
//Repetition the three symbols should appear directly after the part of the expression that it applies to
//1. * means 0 or more times
//2. + means 1 or more times
//3. ? means 0 or 1 times
//eg: /[[:alnum:]+]/ means at least one alphanumeric character
//Subexpression using the parenthesis to group certain words (substring) is called inside ()
//eg: /(very )*large/ means 'large', 'very large', 'very very large'
//counted subExpression using curly braces to show repeated times
//eg: /(very){3}/ 3 times exactly
//eg: /(very){1,3}/ very can be repeated 1-3 times, it is 'very' , 'veryvery', 'veryveryvery'
//eg: /(very){2,}/ very can be repeated at least 2 times, it is 'veryvery', 'veryveryvery', and so on
//Anchoring to the beginning or end of a string
//1. ^ caret outside of [] is used at the start of a regular expression to show that it must appear at the beginning of a searched string
//2. $ at the end
//eg: /^bob/ a string starts with bob
//eg: /com$/ a string ends with com
//eg: /^[a-z]$]/ a string contains a single character between a and z
//Branching
// /com|edu|net/ matched one of those three is ok //Matching literal special character
//1. using backslash \ to escape special character
// "\\\\" => '\\' => '\' Matching one '\' needs three \\\ to escape
// "\\\$" => '\$' => '$' Matching one '\' needs three \\\ to escape
//A Summary of Meta Characters used in PCRE regular expression
//1. outside of square bracket : \ ^ $ . | ( ) * + { } ?
//2. inside of square bracket : \ ^ -
//Back Reference
//1. /^([a-z]+) \1 black sheep / "blarge blarge black sheep" matched // functions in PHP for PCRE regular expression
//find substring
preg_match('/(foo)(bar)(baz)/', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
//Array ( [0] => Array ( [0] => foobarbaz [1] => 0 )
// [1] => Array ( [0] => foo [1] => 0 )
// [2] => Array ( [0] => bar [1] => 3 )
// [3] => Array ( [0] => baz [1] => 6 ) )
preg_match('/(a)(b)*(c)/', 'ac', $matches);
var_dump($matches);
preg_match('/(a)(b)*(c)/', 'ac', $matches, PREG_UNMATCHED_AS_NULL);
var_dump($matches); //replace substring
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3'; //leave the first group(April),plus a literal 1 and ',' and the third group(2003)
echo preg_replace($pattern, $replacement, $string); //April1,2003 $string = 'The quick brown fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string); //The bear black slow jumps over the lazy dog. //splitting strings
$address = 'username@example.com';
$arr = preg_split('/\.|@/', $address);
print_r($arr); //Array ( [0] => username [1] => example [2] => com )

PHP Strings的更多相关文章

  1. Hacker Rank: Two Strings - thinking in C# 15+ ways

    March 18, 2016 Problem statement: https://www.hackerrank.com/challenges/two-strings/submissions/code ...

  2. StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing the strings?

    StackOverFlow排错翻译 - Python字符串替换: How do I replace everything between two strings without replacing t ...

  3. Multiply Strings

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  4. [LeetCode] Add Strings 字符串相加

    Given two non-negative numbers num1 and num2 represented as string, return the sum of num1 and num2. ...

  5. [LeetCode] Encode and Decode Strings 加码解码字符串

    Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...

  6. [LeetCode] Group Shifted Strings 群组偏移字符串

    Given a string, we can "shift" each of its letter to its successive letter, for example: & ...

  7. [LeetCode] Isomorphic Strings 同构字符串

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  8. [LeetCode] Multiply Strings 字符串相乘

    Given two numbers represented as strings, return multiplication of the numbers as a string. Note: Th ...

  9. 使用strings查看二进制文件中的字符串

    使用strings查看二进制文件中的字符串 今天介绍的这个小工具叫做strings,它实现功能很简单,就是找出文件内容中的可打印字符串.所谓可打印字符串的涵义是,它的组成部分都是可打印字符,并且以nu ...

  10. LeetCode 205 Isomorphic Strings

    Problem: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if ...

随机推荐

  1. I fullly understand why can not set "auto commit off" in sqlserver

    This is xxxxx Because MES guy mistaken , the data was wrong and made system error then. After that I ...

  2. 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!

    以往,运营型的web为了安全目的,才使用WAF进行安全防护. 而现如今,WAF对企业web来说,已然成了刚需.为何?等保.网络安全法的硬性要求! 当然,这样要求显然是对的:没有网络安全,就没有国家安全 ...

  3. pytorch之 batch_train

    import torch import torch.utils.data as Data torch.manual_seed(1) # reproducible BATCH_SIZE = 5 # BA ...

  4. iptables服务器主机防火墙

    iptables参数说明: Commands: Either long or short options are allowed. --append -A chain 链尾部追加一条规则 --dele ...

  5. Chrome开发者工具使用指南

    前言 工欲善其事,必先利其器. 在前端工作中,我们常常使用到Chrome开发者工具去做各种各样的事情. 但是您真的了解这些开发者工具吗? 官方文档还是挺详细的:chrome-devtools文档. 但 ...

  6. leetcode--js--Longest Substring Without Repeating Characters

    问题描述: Given a string, find the length of the longest substring without repeating characters. Example ...

  7. MySQL之ERROR 1558 (HY000): Column count of mysql.user is wrong.解决方案

    一.场景 我本想在MySQL5.7上执行下列语句创建一个新用户: CREATE USER "remote"@"%" IDENTIFIED BY "12 ...

  8. 正则表达式验证IP地址(绝对正确)

    正则验证合法_有效的IP地址(ipv4/ipv6) 不墨迹直接上代码: 正则表达式: /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[ ...

  9. SAP VL10B 报错 - 4500000317 000010 交付 $ 1 的交付项目 000010 与 POD 无关-

    SAP VL10B 报错 - 4500000317 000010 交付 $ 1 的交付项目 000010 与 POD 无关- 如下公司间STO单据, 业务背景是货物从公司代码LYSP转入公司代码BTS ...

  10. redis之master.slave主从复制

    简介 主机数据更新后根据配置和策略,自动同步到备机的master/slave机制,master以写为主,slave以读为主 从库配置 配置从库,不配主库 配置从库: 格式: slaveof 主库ip ...