PHP
addcslashes> <stream_wrapper_unregister
Last updated: Mon, 12 Sep 2005

CXLII. String 字符串处理函数

简介

本类函数用来对字符串进行各种操作。对字符串的一些其它专门操作,可以参考手册的正则表达式部分和 URL 操作部分。

如果想要了解字符串的相关内容,特别是有关单引号,双引号等的处理部分,可以参考手册中类型部分中的字符串条目。

需求

要编译本扩展模块不需要外部库文件。

安装

本函数库作为 PHP 内核的一部分,不用安装就能使用。

预定义常量

以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。

CRYPT_SALT_LENGTH integer

CRYPT_STD_DES integer

CRYPT_EXT_DES integer

CRYPT_MD5 integer

CRYPT_BLOWFISH integer

HTML_SPECIALCHARS (integer)

HTML_ENTITIES (integer)

ENT_COMPAT (integer)

ENT_QUOTES (integer)

ENT_NOQUOTES (integer)

CHAR_MAX (integer)

LC_CTYPE (integer)

LC_NUMERIC (integer)

LC_TIME (integer)

LC_COLLATE (integer)

LC_MONETARY (integer)

LC_ALL (integer)

LC_MESSAGES (integer)

STR_PAD_LEFT (integer)

STR_PAD_RIGHT (integer)

STR_PAD_BOTH (integer)

参见

如果想更深入的了解有关字符串高级操作的相关内容,请参阅手册的 POSIX 扩展正则表达式函数Perl 兼容正则表达式函数部分。

目录
addcslashes -- 像 C 那样使用反斜线转义字符串中的字符
addslashes -- 使用反斜线引用字符串
bin2hex --  将二进制数据转换成十六进制表示
chop -- rtrim() 的别名函数
chr -- 返回指定的字符
chunk_split -- 将字符串分割成小块
convert_cyr_string --  将字符由一种 Cyrillic 字符转换成另一种
convert_uudecode --  Decode a uuencoded string
convert_uuencode --  Uuencode a string
count_chars --  返回字符串所用字符的信息
crc32 -- 计算一个字符串的 crc32 多项式
crypt -- One-way string encryption (hashing)
echo -- Output one or more strings
explode -- 使用一个字符串分割另一个字符串
fprintf -- Write a formatted string to a stream
get_html_translation_table --  Returns the translation table used by htmlspecialchars() and htmlentities()
hebrev --  Convert logical Hebrew text to visual text
hebrevc --  Convert logical Hebrew text to visual text with newline conversion
html_entity_decode --  Convert all HTML entities to their applicable characters
htmlentities --  Convert all applicable characters to HTML entities
htmlspecialchars_decode --  Convert special HTML entities back to characters
htmlspecialchars --  Convert special characters to HTML entities
implode -- Join array elements with a string
join -- 别名 implode()
levenshtein --  Calculate Levenshtein distance between two strings
localeconv -- Get numeric formatting information
ltrim --  Strip whitespace (or other characters) from the beginning of a string
md5_file -- Calculates the md5 hash of a given file
md5 -- Calculate the md5 hash of a string
metaphone -- Calculate the metaphone key of a string
money_format -- Formats a number as a currency string
nl_langinfo --  Query language and locale information
nl2br --  Inserts HTML line breaks before all newlines in a string
number_format -- Format a number with grouped thousands
ord -- Return ASCII value of character
parse_str -- Parses the string into variables
print -- Output a string
printf -- Output a formatted string
quoted_printable_decode --  Convert a quoted-printable string to an 8 bit string
quotemeta -- Quote meta characters
rtrim --  Strip whitespace (or other characters) from the end of a string
setlocale -- Set locale information
sha1_file -- Calculate the sha1 hash of a file
sha1 -- Calculate the sha1 hash of a string
similar_text --  Calculate the similarity between two strings
soundex -- Calculate the soundex key of a string
sprintf -- Return a formatted string
sscanf --  Parses input from a string according to a format
str_ireplace --  Case-insensitive version of str_replace().
str_pad --  Pad a string to a certain length with another string
str_repeat -- Repeat a string
str_replace --  Replace all occurrences of the search string with the replacement string
str_rot13 -- Perform the rot13 transform on a string
str_shuffle -- Randomly shuffles a string
str_split --  Convert a string to an array
str_word_count --  Return information about words used in a string
strcasecmp --  Binary safe case-insensitive string comparison
strchr -- 别名 strstr()
strcmp -- Binary safe string comparison
strcoll -- Locale based string comparison
strcspn --  Find length of initial segment not matching mask
strip_tags -- Strip HTML and PHP tags from a string
stripcslashes --  Un-quote string quoted with addcslashes()
stripos --  Find position of first occurrence of a case-insensitive string
stripslashes --  Un-quote string quoted with addslashes()
stristr --  Case-insensitive strstr()
strlen -- Get string length
strnatcasecmp --  Case insensitive string comparisons using a "natural order" algorithm
strnatcmp --  String comparisons using a "natural order" algorithm
strncasecmp --  Binary safe case-insensitive string comparison of the first n characters
strncmp --  Binary safe string comparison of the first n characters
strpbrk --  Search a string for any of a set of characters
strpos --  Find position of first occurrence of a string
strrchr --  Find the last occurrence of a character in a string
strrev -- Reverse a string
strripos --  Find position of last occurrence of a case-insensitive string in a string
strrpos --  Find position of last occurrence of a char in a string
strspn --  Find length of initial segment matching mask
strstr -- Find first occurrence of a string
strtok -- Tokenize string
strtolower -- Make a string lowercase
strtoupper -- Make a string uppercase
strtr -- Translate certain characters
substr_compare --  Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters
substr_count -- Count the number of substring occurrences
substr_replace -- Replace text within a portion of a string
substr -- Return part of a string
trim -- Strip whitespace (or other characters) from the beginning and end of a string
ucfirst -- Make a string's first character uppercase
ucwords --  Uppercase the first character of each word in a string
vfprintf -- Write a formatted string to a stream
vprintf -- Output a formatted string
vsprintf -- Return a formatted string
wordwrap --  Wraps a string to a given number of characters using a string break character


add a note add a note User Contributed Notes
String 字符串处理函数
beggining pro
02-Aug-2006 11:00
Well for you egold users out ther I wrote this to just return the balance ONLY
If anyone knows a better way to write this lemme know as im a novice

   function _GetBalance($from, $frompass) {
   $defined_vars = get_defined_vars();

   $_url = 'https://www.e-gold.com/acct/balance.asp';

       $_url_p = "AccountID=" . $from . "&PassPhrase=" . $frompass ."";
           $ch = curl_init();

   curl_setopt($ch, CURLOPT_POST,1);
   curl_setopt($ch, CURLOPT_POSTFIELDS,$_url_p);
   curl_setopt($ch, CURLOPT_URL,$_url);
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,  2);
   curl_setopt($ch, CURLOPT_USERAGENT, $defined_vars['HTTP_USER_AGENT']);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
   $content = curl_exec ($ch);

   curl_close ($ch);
$content=strtolower($content);
$content=strstr($content,"</select></font></th></form></tr>");
$content=strip_tags($content);
$content=strrev($content);
$content=strstr($content,"eseht :eton");
$content=str_replace("eseht :eton","",$content);
$content=ltrim($content);
$content=rtrim($content);
$content=substr($content,0,11);
$content=strrev($content);
$content=ltrim($content);

   return $content;

   }
admin at rotarymulundeast dot org
30-Jul-2006 03:16
Here's an easier way to find nth...

function nth($numbex){
  if ($numbex%10 == 1 && $numbex%100 != 11) $sth='st';
  elseif ($numbex%10 == 2 && $numbex%100 != 12) $sth='nd';
  elseif ($numbex%10 == 3 && $numbex%100 != 13) $sth='rd';
  else $sth = 'th';
  return $sth;
}

there is is no need to check if the user has entered a non-integer as we may be using this function for expressing variables as well eg. ith value of x , nth root of z ,etc...
heavyraptor
27-Jul-2006 08:17
I think that
administrador(ensaimada)sphoera(punt)com's function is
too complicated. It's easier with regular expressions.
So I made this function, it isn't really the same,
it's even better because it returns an array with all the
matches found
If there are no matches, false is returned.

<?php
// bool/array str_between( string str, string
start_str, string end_str )
function
str_between($str,$start,$end) {
  if (
preg_match_all('/' . preg_quote($start) . '(.*?)' . preg_quote($end) . '/',$str,$matches)) {
   return
$matches[1];
  }
 
// no matches
 
return false;
}
?>

Enjoy
da (dot) blayde (a t) gmail (dot) com
19-Jul-2006 10:52
Sometimes when converting integers to strings, it looks better to have the number spelled out. I wrote this function that converts integers from -999 to 999 into spelled out strings:

function int2str($int=0){
 $doOnes=true;
 $neg=$int<0?true:false;
 $int=abs(round($int));
 $str='';
 switch(strlen($int)){
  case 1:$int='0'.$int;
  case 2:$int='0'.$int;
  case 3:$int.='';break;
  default:return $int;
 }
 switch($int{0}){
  case 1:$str.='one-hundred-';break;
  case 2:$str.='two-hundred-';break;
  case 3:$str.='three-hundred-';break;
  case 4:$str.='four-hundred-';break;
  case 5:$str.='five-hundred-';break;
  case 6:$str.='six-hundred-';break;
  case 7:$str.='seven-hundred-';break;
  case 8:$str.='eight-hundred-';break;
  case 9:$str.='nine-hundred-';break;
 }
 switch($int{1}){
  case 1:
   switch($int{2}){
   case 0:$str.='ten-';break;
   case 1:$str.='eleven-';break;
   case 2:$str.='twelve-';break;
   case 3:$str.='thirteen-';break;
   case 4:$str.='fourteen-';break;
   case 5:$str.='fifteen-';break;
   case 6:$str.='sixteen-';break;
   case 7:$str.='seventeen-';break;
   case 8:$str.='eighteen-';break;
   case 9:$str.='nineteen-';break;
   }
   $doOnes=false;
  break;
  case 2:$str.='twenty-';break;
  case 3:$str.='thirty-';break;
  case 4:$str.='forty-';break;
  case 5:$str.='fifty-';break;
  case 6:$str.='sixty-';break;
  case 7:$str.='seventy-';break;
  case 8:$str.='eighty-';break;
  case 9:$str.='ninety-';break;
 }
 if($doOnes){
  switch($int{2}){
   case 1:$str.='one-';break;
   case 2:$str.='two-';break;
   case 3:$str.='three-';break;
   case 4:$str.='four-';break;
   case 5:$str.='five-';break;
   case 6:$str.='six-';break;
   case 7:$str.='seven-';break;
   case 8:$str.='eight-';break;
   case 9:$str.='nine-';break;
 }}
 $str=substr($str,0,-1);
 if($neg){
  $str='negative '.$str;
 }
 if($int=='000'){
  $str='zero';
 }
 return $str;
}

Hope this helps someone,
-Blayde
mickycole at hotmail dot com
19-Jul-2006 12:01
In responce to James Baker's sencence case function.
Great function however i would make one slight variation being that it doesn't take into account the fact that a capital is required after a new paragraph so i modified it to check for /r and /n as follows:
<?PHP
/*/ Author : James Baker /*/
function sentenceCase($s){
  
$str = strtolower($s);
  
$cap = true;
 
   for(
$x = 0; $x < strlen($str); $x++){
      
$letter = substr($str, $x, 1);
       if(
$letter == "." || $letter == "!" || $letter == "?" || $letter == "\n" || $letter == "\r"){
          
$cap = true;
       }elseif(
$letter != " " && $cap == true){
          
$letter = strtoupper($letter);
          
$cap = false;
       }
    
      
$ret .= $letter;
   }
 
   return
$ret;
}
?>
administrador(ensaimada)sphoera(punt)com
02-Mar-2006 06:10
I've prepared this simple function to obtain a string delimited between tags (not only XML tags!). Anybody needs something like this?.

<?php

function get_string_between($string, $start, $end){
  
$string = " ".$string;
    
$ini = strpos($string,$start);
     if (
$ini == 0) return "";
    
$ini += strlen($start);   
    
$len = strpos($string,$end,$ini) - $ini;
     return
substr($string,$ini,$len);
}

$string = "this [custom] function is useless!!";
echo
get_string_between($string,"[","]");
// must return "custom";
?>
more functions at http://www.sphoera.com
SteveRusin
24-Feb-2006 11:00
The functions below:

function beginsWith( $str, $sub )
function endsWith( $str, $sub )

Are correct, but flawed.  You'd need to use the === operator instead:

function beginsWith( $str, $sub ) {
   return ( substr( $str, 0, strlen( $sub ) ) === $sub );
}
function endsWith( $str, $sub ) {
   return ( substr( $str, strlen( $str ) - strlen( $sub ) ) === $sub );
}

Otherwise, endsWith would return "foobar.0" ends with ".0" as well as "0" or "00" or any amount of zeros because numerically .0 does equal 0.
navarr at gmail dot com
20-Dec-2005 06:24
stripos for PHP4.x

<?php
 
function stripos($haystack,$needle) {
   return
strpos(strtoupper($haystack),strtoupper($needle));
  }
?>
dkflbk at nm dot ru
11-Dec-2005 08:58
I needed str2bin() function for one of my project, so if some one else is want to use it, have fun :)

<?php
/**
 *    Returns an ASCII string containing
 *    the binary representation of the input data .
**/
function str2bin($str, $mode=0) {
  
$out = false;
   for(
$a=0; $a < strlen($str); $a++) {
      
$dec = ord(substr($str,$a,1));
      
$bin = '';
       for(
$i=7; $i>=0; $i--) {
           if (
$dec >= pow(2, $i) ) {
              
$bin .= "1";
              
$dec -= pow(2, $i);
           } else {
              
$bin .= "0";
           }
       }
      
/* Default-mode */
      
if ( $mode == 0 ) $out .= $bin;
      
/* Human-mode (easy to read) */
      
if ( $mode == 1 ) $out .= $bin . " ";
      
/* Array-mode (easy to use) */
      
if ( $mode == 2 ) $out[$a] = $bin;
   }
   return
$out;
}
?>
admin at fivestarbuy dot com
21-Oct-2005 09:18
This example lets you parse an unparsed strings variables. Warning: This could cause security leaks if you allow users to pass $variables through this engine. I recommend only using this for your Content Management System.

<?
$mytime=time();
$mydog="My Dog Ate My PHP!";

# Your Parsing String:
$s1 = 'Hyphen Variable Preserving: $mytime, and $mydog';
echo "Before: <br><br>$s1<br><br>";

# Remember, wherever you define this, it will not be defined GLOBAL into the function
# which is why we define it here. Defining it global could lead to security issues.
$vardata=get_defined_vars();

# Parse the string
$s1 = StrParse($s1,$vardata);

echo "After: <br><br>$s1";