正则表达式匹配字符

 更新时间:2016年11月25日 15:51  点击:1549

正则表达式的匹配规则修改如下:
([.n]*),当然,如果是在java程序中直接写到话,需要改为([.n]*)
结果再次运行程序,发现什么内容也取不到了。我百思不得其解,又将其修改为如下规则:
([.|n]*) 以及 ([n.]*)
结果还是不行,什么内容都取不到。看来点符号和换行符卯上劲了~
然后上网一查,虽然没有查出上述规则到底是什么地方出问题了,但是查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则:
([ss]*)
同时,也可以用 “([dd]*)”、“([ww]*)” 来表示。


在文本文件里, 这个表达式可以匹配所有的英文
/[ -~]/
这个表达式可以匹配所有的非英文(比如中文)
/[^ -~]/
/是vi里用的. 你在editplus或程序里不需要/

 

<form action="pcre.php教程" name="form1" method="post" >
输入将要匹配的字符串:<input type="text" name="str"  id="str" /><br />
<input type="submit" name="submit1" id="submit1" value="提交" />
</form>
<?php
$pattern="/d/";
if(preg_match($pattern, $str,$output)){
echo "匹配字符成功".$output;
}
else echo "匹配字符失败";
?>
</body>

数组的排序
在php教程中,排序方式有三种,通过索引排序、通过值排序(不保留原索引)、通过值排序(保留原索引)。每种又分为升序、降序以及用户定义顺序三个函数。它们分别如下:
通过索引排序:①升序 ksort() ②降序 krsort() ③用户定义顺序 uksort()
不保留原索引值排序:①升序 sort() ②降序 rsort() ③用户定义顺序 usort()
保留原索引值排序:①升序 asort() ②降序 arsort() ③用户定义顺序 uasort()
在php中,也可以用array_multisort来一次排序多个数组,不过项目中可能用得比较少。
翻转数组,把数字索引翻转,索引重新从0开始:array_reverse()
把索引和值调换:array_flip()
随机顺序:shuffle()
迭代器遍历

 

$test01 = array('a', 'b', 'c');
// for
for ($i = 0; $i < count($test01); $i++) {
    echo $test01[$i];
}
// foreach value only
foreach ($test01 as $value) {
    echo $value;
}
// foreach key and value
$test01 = array('a' => 'aaaa', 'b' => 'bbbb', 'c' => 'cccc');
foreach ($test01 as $key => $value) {
    echo "$key => $value";
}


$test01 = array('a' => 'aaaa', 'b' => 'bbbb', 'c' => 'cccc');
while (list($key, $value) = each($test01)) {
    echo "$key => $value" . "<br/>";
}

php中,迭代遍历主要要用到以下函数。
current() 迭代的当前元素。
reset() 重新移动到第一个元素并返回它。
next() 移动到下一个元素并返回它。
prev() 移动到上一个元素并返回它。
end() 移动到最后一个元素并返回它。
each() 以数组的形式返回当前元素的索引和值,并移动到下一个迭代。
key() 返回当前的索引。
array_ walk() 为每一个元素调用函数。
array_ reduce() 为每一个元素依次计算。

变通遍历
 

array_walk($test01, walk_test);
function walk_test($key, $value) {
    echo "walk: $key => $value" . "<br/>";
}
 
$test02 = array(1, 2, 3, 4, 5);
echo array_reduce($test02, reduce_test);
function reduce_test($run_result, $current_value) {
    return $run_result + $current_value * $current_value;
}

 

php教程 $ _post函数 与$_get函数详解

1、get是从服务器上获取数据,post则是向服务器传送数据;

    2、get将表单中数据的按照variable=value的 形式,添加到action所指向的url后面,并且两者使用“?”连接,而各个变量之间使用“&”连接。post是将表单中的数据放在form的 数据体中,按照变量和值相对应的方式,传递到action所指向url;fashion jewelry wholesale

    所以从上述也可以得到另外两个结论:

       1、get传送的数据量较小,不能大于2kb,这主要是因为受url长度限制。post传送的数据量较大,所以在上传文件只能使用post。一般被默认为不受限制。但理论上,iis4中最大量为80kb,iis5中为100kb;

       2、get安全性非常低(因为用户可以通过url看到),post安全性较高(其所有操作对用户来说都是不可见的)。但是执行效率却比post方法好;

    3、get限制form表单的数据集的值必须为ascii字符;而post支持整个iso10646字符集;cleaning cloth

    4、get是form的默认方法;

    5、get方式提交来的数据在服务器端用request.querystring()来获取,用post方式提交的数据用request.form()来获取(这一点不是很明确);

建议:

    1、如果是包含机密信息的话,建议用post数据提交方式;

    2、在做数据查询时,建议用get方式;而在做数据添加、修改或删除时,建议用post方式;


get实例

内置的$ _get函数是用来收集从表单发送一个method="get"的值。信息是一个用get方法的形式发送的.用户可见的(它会在浏览器的地址栏显示),并已对信息发送数量限制。
举个例子 :
<form action="test.php" method="get">
    name: <input type="text" name="username" />
    age: <input type="text" name="age" />
    <input type="submit" value="submit" />
</form>
当用户点击“提交”按钮,发送到服务器的url可能看起来像这样:
http: //localhost/demo/test.php?username=lily&age=28

在"test.php"文件,现在可以使用$ _get这个函数来收集表单数据(表单字段的名称将自动在$ _get数组的键):
welcome <?php echo $_get["username"]; ?><br />
you are <?php echo $_get["age"]; ?> years old!

那何时使用 method="get" 呢?
当使用 method="get" 在html表单,所有的变量名和值显示在url中。注意:这个方法不应该被使用在密码或其他敏感信息!但是,由于变量在显示网址,是有可能的书签页面。这可以在某些情况下有用。get方法是不适合非常大的变量值。它不应该使用超过2000个字符的值


$_post实例

内置在$ _post功能是用来收集在一个表单 method="post" 值。使用post方法的形式发送的信息用户是看不见的,并已对信息发送量没有限制。但是,对于post方法有一个8 mb max size,默认情况下(可通过设置在php.ini文件中的post_max_size更改)。
举个例子 :
<form action="welcome.php" method="post">
    name: <input type="text" name="username" />
    age: <input type="text" name="age" />
    <input type="submit" value="submit" />
</form>

当用户点击“提交”按钮,发送到服务器的url可能看起来像这样:
http: //localhost/demo/test.php

在"test.php"文件,现在可以使用了$ _post功能,收集表单数据(表单字段的名称将自动在$ _post数组的键):
welcome <?php echo $_post["username"]; ?>!<br />
you are <?php echo $_post["age"]; ?> years old.


那何时使用 method="post" 呢?
       使用post方法的形式发送的信息用户是看不见的,并已对信息发送量没有限制。但是,由于变量没有在url中显示,这是不可能的书签的页面。

php的$ _request的作用
        php的内置函数包含在$ _request中的有两种形式 $ _get,$ _post和$ _cookie 。$ _request函数,可用于收集get和post方法发送表单数据。
welcome <?php echo $_request["username"]; ?>!<br />
you are <?php echo $_request["age"]; ?> years old.

php教程 正则表达式实例详解(适合初学者)
数学公式正则表达式:
(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))

匹配加减乘除数学公式,如:((1+2)-3*4)

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
可以"("开始,压入堆栈统计括号数量,*代表可以出现0次或多次

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
可以出现一次正负号

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
0-9数字,一个或多个

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
可以")"结束,弹出堆栈统计括号数量,*代表可以出现0次或多次

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
橙色括号分组说明可以出现一次或多次,如公式1+2 ,这个括号里是匹配 2
红色要求+-*/出现一次

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
判断括号开始时,可以有正负号,?代表使用懒惰匹配,即如:1+(((2-3)+4)+5)时,只匹配数字2前面的一个括号一次

(?'kh'()*([-+]){0,1}[0-9.]+(?'-kh'))*([+-*/]{1}(?'kh'()*((?<=()([-+]){0,1})?[0-9.]+(?'-kh'))*)+(?('kh')(?!))
检查括号是否配对

1:如果打开的页面有乱码,别急,先不要做任何编辑。切记。
2:然后点击菜单修改-》页面属性-》标题/编码
3:在编码里选择 简体中文(gb2321)
4:点击 重新载入-》确定

新建一个记事本(不是写字板哦!),然后将那个要读取的文件全部复制到这个记事本文件中,保存。再用如下代码读取那个记事本文件1303275.txt:发现当网页编码为gb2312时全部正常显示。改为utf8编码后,数字正常,汉字为乱码,这也属于正常

<?php教程 
  $file = fopen("1303275.txt","r");//只读方式打开文本文件
  while(! feof($file))//当文件不结束
  {
      $line=fgets($file);//读一行到$line变量
      echo $line."<br />";
  }
  fclose($file);//关闭文本文件

?>

上面的方法比较笨但也解决问题,下面我提供一个不管什么txt文本都不会乱的解决方法.

 

/*
@params $str 输入字符 $type 所需获取编码
@author 长行
*/
function autoiconv($str,$type = "gb2312//ignore"){

$utf32_big_endian_bom = chr(0x00) . chr(0x00) . chr(0xfe) . chr(0xff);
$utf32_little_endian_bom = chr(0xff) . chr(0xfe) . chr(0x00) . chr(0x00);
$utf16_big_endian_bom = chr(0xfe) . chr(0xff);
$utf16_little_endian_bom = chr(0xff) . chr(0xfe);
$utf8_bom = chr(0xef) . chr(0xbb) . chr(0xbf);

$first2 = substr($str, 0, 2);
$first3 = substr($str, 0, 3);
$first4 = substr($str, 0, 3);

if ($first3 == $utf8_bom) $icon = 'utf-8';
elseif ($first4 == $utf32_big_endian_bom) $icon = 'utf-32be';
elseif ($first4 == $utf32_little_endian_bom) $icon = 'utf-32le';
elseif ($first2 == $utf16_big_endian_bom) $icon = 'utf-16be';
elseif ($first2 == $utf16_little_endian_bom) $icon = 'utf-16le';
else { $icon = 'ascii'; return $str;}

return iconv($icon,$type,$str);

}

[!--infotagslink--]

相关文章

  • 一个关于JS正则匹配的踩坑记录

    这篇文章主要给大家介绍了一个关于JS正则匹配的踩坑记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • PHP正则表达式取双引号内的内容

    取双引号内的内容我们如果一个字符串中只有一个可以使用explode来获得,但如果有多个需要使用正则表达式来提取了,具体的例子如下。 写程序的时候总结一点经验,如何只...2016-11-25
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08
  • php 验证只能输入汉字、英语、数字的正则表达式

    正则表达式是一门非常有用的并且进行模糊判断的一个功能了,我们下面来看通过正则来验证输入汉字、英语、数字,具体如下。 收藏了正则表达式。可以验证只能输入数...2016-11-25
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • 常用的日期时间正则表达式

    常用的日期时间正则表达式 下面收藏了大量的日期时间正则匹配函数,包括分钟,时间与秒都能达到。 正则表达式 (?n:^(?=d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(...2016-11-25
  • PHP正则表达式匹配验证提取网址URL实例总结

    网址规则是可寻的,所以我们可以使用正则表达式来提取字符串中的url地址了,下面一起来看看小编整理的几个PHP正则表达式匹配验证提取网址URL实例. 匹配网址 URL 的...2016-11-25
  • JavaScript利用正则表达式替换字符串中的内容

    本文主要介绍了JavaScript利用正则表达式替换字符串中内容的具体实现方法,并做了简要注释,便于理解。具有一定的参考价值,需要的朋友可以看下...2017-01-09
  • JS基于正则截取替换特定字符之间字符串操作示例

    这篇文章主要介绍了JS基于正则截取替换特定字符之间字符串操作方法,结合具体实例形式分析了JS基于正则实现针对特殊字符、数字等字符串类型的截取操作相关技巧,需要的朋友可以参考下...2017-02-08
  • 正则表达式中两个反斜杠的匹配规则详解

    这篇文章主要介绍了正则表达式中两个反斜杠的匹配规则,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • JS中使用正则表达式g模式和非g模式的区别

    这篇文章给大家详细介绍了JS中使用正则表达式g模式和非g模式的区别,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-04-03
  • C#正则表达式使用方法示例

    这篇文章主要介绍了C#正则表达式使用方法,大家参考使用...2020-06-25
  • 一文秒懂python正则表达式常用函数

    这篇文章主要介绍了python正则表达式常用函数及使用方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • 常用C#正则表达式汇总介绍

    c#正则表达式,用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。...2020-06-25
  • JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】

    这篇文章主要介绍了JS常见简单正则表达式验证功能,结合实例形式总结分析了JS针对手机,地址,企业税号,金额,身份证等的常见验证技巧,需要的朋友可以参考下...2017-01-26
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • Idea使用正则表达式批量替换字符串的方法

    这篇文章给大家介绍了Idea使用正则表达式批量替换字符串的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-07-21
  • js正则学习小记之匹配字符串字面量

    关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配,因为我想学完之后写个语法高亮练手,所以用js代码当作例子...2021-05-07
  • javascript 手机号码正则表达式验证函数 <font color=red>原创</font>

    随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。...2021-05-07
  • PHP正则表达式之捕获组与非捕获组

    今天遇到一个正则匹配的问题,忽然翻到有捕获组的概念,手册上也是一略而过,百度时无意翻到C#和Java中有对正则捕获组的特殊用法,搜索关键词有PHP时竟然没有相关内容,自己试了一下,发现在PHP中也是可行的,于是总结一下,分享的同...2015-11-08