<?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. 免费丨十大IT热门学科在线直播体验课正式来袭,全免费!!!

    一场突如其来的疫情阻挡了人与人之间的接触,在这一系列困难面前,无数勇敢的人们挺身而出,千里驰援,默默承担,用行动践行责任与信念,希望与祖国和家人一道共渡难关. 传智播客作为一家致力于“高精尖”IT科技 ...

  2. Altium Designer 14安装破解

    Altium Designer 14简称AD14,是一款专业的PCB设计软件,利用他可以计出专业的PCB元件.Altium Designer 14.3.10是目前的最新版本. Altium Desig ...

  3. 关于SQL Server 2012 手动安装帮助文档

    大家以为安装帮助文档很简单,但是其实不然,这其中还有那么一点点道道.今天我就来给大家演示一下! 首先到microsoft官网上下载Microsoft SQL Server 2012 产品文档,然后将. ...

  4. angularJS 传参的四种方法 【修改】

    1. 基于ui-router的页面跳转传参(1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个produce ...

  5. Asp.Net Core IdentityServer4 管理面板集成

    前言 IdentityServer4(以下简称 Id4) 是 Asp.Net Core 中一个非常流行的 OpenId Connect 和 OAuth 2.0 框架,可以轻松集成到 Asp.Net C ...

  6. 高精度模板(Vector实现更加方便)

    计算的数long long 甚至更大的数据类型的都存不下的时候,应该怎么办 ? 解决方法 :我们可以把一个很大的数当做字符串进行处理,这时候就需要用到高精度. 话不多说,咱们边看代码边处理 : 加法 ...

  7. 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?

    在Java基础中,集合类是很关键的一块知识点,也是日常开发的时候经常会用到的.比如List.Map这些在代码中也是很常见的. 个人认为,关于HashMap的实现,JDK的工程师其实是做了很多优化的,要 ...

  8. RPC(简单实现)

    笔者之前仅看过RPC这个单词,完全没有了解过,不想终于还是碰上了.起因:这边想提高并发量而去看kafka(最后折中使用了redis),其中kafka需要安装ZooKeeper,而ZooKeeper又与 ...

  9. 【Java并发工具类】原子类

    前言 为保证计数器中count=+1的原子性,我们在前面使用的都是synchronized互斥锁方案,加锁独占访问的方式未免太过霸道,于是我们来介绍另一种解决原子性问题的无锁方案:原子变量.在正式介绍 ...

  10. 剖析Java OutOfMemoryError异常

    剖析Java OutOfMemoryError异常 在JVM中,除了程序计数器外,虚拟机内存中的其他几个运行时区域都有发生OutOfMemoryError异常的可能,本篇就来深入剖析一下各个区域出现O ...