php+ksort+返回true,PHP preg_replace函数

mixed preg_replace( mixed pattern, mixed replacement, mixed subject [, int limit] )

在PHP中用来执行正则表达式的匹配以及替换的函数。可以返回一个正则表达式转换后的值。

在subject中搜索pattern模式的匹配项,并用replacement模式进行替换。如果指定了 limit,则仅替换limit个匹配,如果省略limit或者其值为 -1,则所有的匹配项都会被替换。

参数

pattern

要搜索的模式。可以使一个字符串或字符串数组。

可以使用一些PCRE修饰符,包括被弃用的’e'(PREG_REPLACE_EVAL),可以为这个函数指定。

replacement

用于替换的字符串或字符串数组。如果这个参数是一个字符串,并且pattern是一个数组,那么所有的模式都使用这个字符串进行替换。如果pattern和replacement都是数组,每个pattern使用replacement中对应的元素进行替换。如果replacement中的元素比pattern中的少,多出来的pattern使用空字符串进行替换。

replacement中可以包含后向引用\\n或(php 4.0.4以上可用)$n,语法上首选后者。 每个这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n可以是0-99,\\0和$0代表完整的模式匹配文本。捕获子组的序号计数方式为:代表捕获子组的左括号从左到右, 从1开始数。如果要在replacement中使用反斜线,必须使用4个(“\\\\”,译注:因为这首先是php的字符串,经过转义后,是两个,再经过正则表达式引擎后才被认为是一个原文反斜线)。

当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字(比如:在一个匹配模式后紧接着增加一个原文数字),不能使用\\1这样的语法来描述后向引用。比如, \\11将会使preg_replace()不能理解你希望的是一个\\1后向引用紧跟一个原文1,还是一个\\11后向引用后面不跟任何东西。 这种情况下解决方案是使用\${1}1。这创建了一个独立的$1后向引用, 一个独立的原文1。

当使用被弃用的 e 修饰符时, 这个函数会转义一些字符(即:’、”、\ 和 NULL) 然后进行后向引用替换。当这些完成后请确保后向引用解析完后没有单引号或双引号引起的语法错误(比如: ‘strlen(\’$1′)+strlen(“$2″)’)。确保符合PHP的字符串语法,并且符合eval语法。因为在完成替换后,引擎会将结果字符串作为php代码使用eval方式进行评估并将返回值作为最终参与替换的字符串。

subject

要进行搜索和替换的字符串或字符串数组。

如果subject是一个数组,搜索和替换回在subject的每一个元素上进行, 并且返回值也会是一个数组。

limit

每个模式在每个subject上进行替换的最大次数。默认是-1(无限)。

count

如果指定,将会被填充为完成的替换次数。

返回值

如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。

如果匹配被查找到,替换后的subject被返回,其他情况下 返回没有改变的subject。如果发生错误,返回 NULL 。

范例

#1 使用后向引用紧跟数值原文

$string = 'April 15, 2003';

$pattern = '/(\w+) (\d+), (\d+)/i';

$replacement = '${1}1,$3';

echo preg_replace($pattern, $replacement, $string);

?>

0

1

2

3

4

5

$string='April 15, 2003';

$pattern='/(\w+) (\d+), (\d+)/i';

$replacement='${1}1,$3';

echopreg_replace($pattern,$replacement,$string);

?>

以上例程会输出:April1,2003

#2 preg_replace()中使用基于索引的数组

$string = 'The quick brown fox jumped 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);

?>

0

1

2

3

4

5

6

7

8

9

10

11

$string='The quick brown fox jumped 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';

echopreg_replace($patterns,$replacements,$string);

?>

以上例程会输出:The bear black slow jumped over the lazy dog.

对模式和替换内容按key进行排序我们可以得到期望的结果。

ksort($patterns);

ksort($replacements);

echo preg_replace($patterns, $replacements, $string);

?>

0

1

2

3

4

ksort($patterns);

ksort($replacements);

echopreg_replace($patterns,$replacements,$string);

?>

以上例程会输出:The slow black bear jumped over the lazy dog.

#3 替换一些值

$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',

'/^\s*{(\w+)}\s*=/');

$replace = array ('\3/\4/\1\2', '$\1 =');

echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');

?>

0

1

2

3

4

5

$patterns=array('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/',

'/^\s*{(\w+)}\s*=/');

$replace=array('\3/\4/\1\2','$\1 =');

echopreg_replace($patterns,$replace,'{startDate} = 1999-5-27');

?>

以上例程会输出:$startDate = 5/27/1999

#4 剥离空白字符

$str = 'foo   o';

$str = preg_replace('/\s\s+/', ' ', $str);

// 将会改变为'foo o'

echo $str;

?>

0

1

2

3

4

5

$str='foo   o';

$str=preg_replace('/\s\s+/',' ',$str);

// 将会改变为'foo o'

echo$str;

?>

#5 使用参数count

$count = 0;

echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);

echo $count; //3

?>

0

1

2

3

4

$count=0;

echopreg_replace(array('/\d/','/\s/'),'*','xp 4 to',-1,$count);

echo$count;//3

?>

以上例程会输出:

xp***to

3

Note

当使用数组形式的pattern和replacement时, 将会按照key在数组中出现的顺序进行处理. 这不一定和数组的索引顺序一致. 如果你期望使用索引对等方式用replacement对pattern进行替换, 你可以在调用preg_replace()之前对两个数组各进行一次ksort()排序.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下拉选择框

</select> 标签有一个属性 multiple&#xff0c;将其设置成 multiple"multiple" 按住 Ctrl 键即可实现多选。 请看例子&#xff1a; <html><head><meta http-equiv"Content-Type" content"text/html; charsetgb2312" />…

rest端点_REST:使用Controller端点?

rest端点在一般的REST架构中&#xff0c;基本概念是资源。 在资源之后&#xff0c;下一步是为这些资源开发一个统一接口&#xff0c;这在HTTP领域通常意味着&#xff1a; 创建为POST 阅读就是GET 更新为PUT&#xff08;或部分更新为PATCH&#xff09; 删除已删除 在现实世…

Java 字符串与整数之间的互相转换

1、如何将字符串String转化为整数int int i Integer.parseInt(str); int i Integer.valueOf(my_str).intValue(); 注: 字串转成Double, Float, Long的方法大同小异。 2、如何将字符串String转化为Integer Integer integerInteger.valueOf(i)3、如何将整数 int 转换成字串 Str…

hello world_建立无服务器的“ Hello World”功能

hello world无服务器 &#xff0c;功能即服务&#xff08;FaaS&#xff09;或仅具有云功能&#xff0c;就可以编写将在云中运行的代码。 您可以使用多种不同的语言&#xff08;例如JavaScript&#xff08;Node.js&#xff09;&#xff0c;Swift&#xff0c;Python&#xff0c;J…

xshell调出oracle安装界面,XShell+Xmanager实现在XShell中显示远程服务器的图形界面

你可以使用Xmanager软件&#xff0c;远程安装Oracle软件&#xff0c;Linux操作系统使用字符安装并不影响这种方式的使用。这个方案也可以大大优化你的Linux系统的性能&#xff0c;进而提高你的数据库性能。启动你的的Xmanager&#xff0c;我现在使用的是3.0版本&#xff0c;接收…

Oracle 数据库错误信息:动态执行表不可访问,本会话的自动统计被禁止

使用 PL/SQL 时, 每次第一次打开表的时候会提示以下信息&#xff1a; 动态执行表不可访问&#xff0c;本会话的自动统计被禁止&#xff0c;原因&#xff1a;V$SESSION,V$SESSTAT,V$STATNAME 没有被授权&#xff0c;没有权限访问这几张表&#xff0c;所以没有本法进行统计!那就…

jdk类加载器执行步骤_[JDK 11] jcmd中的类加载器层次结构详细信息

jdk类加载器执行步骤自从在JavaOne 2012上听说 jcmd以来&#xff0c;我就一直是命令行诊断工具jcmd的 粉丝 。 从那时起&#xff0c;我已经广泛使用了此工具&#xff0c;并多次在此博客中发布过此工具&#xff1a; jcmd&#xff1a;一个可以全部统治的JDK命令行工具 确定活动…

7445 oracle,Oracle 10g impdp 报 ORA-7445 [_INTEL_FAST_MEMCPY.A] 解决方法

在Oracle 10.2.0.4 以后的平台&#xff0c;我们在使用数据泵导入物化视图时&#xff0c;可能会遇到如下错误&#xff1a;...ksedmp: internal or fatal errorORA-7445: exception encountered: core dump [_intel_fast_memcpy.A()10][SIGSEGV] [Address not mapped to object] …

如何通过 PL/SQL Developer 将 Excel 数据导入 Oracle 对应的表中

首先将 Excel 文件另存为文本文件&#xff0c;然后在点击 PL/SQL Developer 菜单栏的【工具】-【文本导入器】&#xff0c;打开后如图所示&#xff1a; 上述步骤操作完之后&#xff0c;点击【到oracle的数据】&#xff1a;

kafka grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST

kafka grpc机器学习/深度学习模型可以通过不同的方式进行预测。 我的首选方法是将分析模型直接部署到流处理应用程序&#xff08;如Kafka Streams或KSQL &#xff09;中。 您可以例如使用TensorFlow for Java API 。 这样可以实现最佳延迟和外部服务的独立性。 在我的Github项目…

Linux命令gitview,使用linux的gitview命令查看文件内容

使用linux的gitview命令查看文件内容发布时间&#xff1a;2020-07-22 10:23:42来源&#xff1a;亿速云阅读&#xff1a;99作者&#xff1a;清晨栏目&#xff1a;服务器这篇文章将为大家详细讲解有关使用linux的gitview命令查看文件内容&#xff0c;小编觉得挺实用的&#xff0c…

通过 PL/SQL Developer 建表

点击菜单栏的【文件】-【新建】-【表】&#xff0c;如下图所示&#xff1a;

nutshell_Nutshell中的Java 8语言功能-第2部分

nutshell编者注&#xff1a;您也可以在此处检查Part-1。 嗨&#xff0c;朋友&#xff0c;这是简明系列的Java 8语言功能的第2部分。 在这里&#xff0c;我们将讨论Java 8的以下功能&#xff1a; 接口中的静态方法 流 1.接口中的静态方法 什么是静态方法&#xff1f; 静态方…

Windows 7 下安装 Oracle 数据库和 PL/SQL Developer

win7下无论是32bits还是64bits&#xff0c;建议只安装oracle 11g 32bits&#xff0c;然后直接安装pl/sql developer&#xff0c;不需要额外的配置&#xff0c;就可以通过pl/sql developer来访问数据库了&#xff0c;如果真要配置&#xff0c;就是配置下pl/sql developer的连接&…

linux临时文件创建失败,-bash: 无法为立即文档创建临时文件: 设备上没有空间

Linux在使用中&#xff0c;突然出现空间不足情况&#xff0c;解决步骤大致为先清除进程&#xff0c;再删除文件一、进程状况1、查看磁盘空间和使用情况(​“df -h”显示目前磁盘空间和使用情况。 “df -i” 以inode模式来显示磁盘使用情况。)# df -h2、查看清理进程/# lsof | g…

机器学习java_Java机器学习,第1部分

机器学习java您搜索了某种导出机器学习模型的方法&#xff0c;以便可以将它们用于评估数据&#xff0c;并且可以将它们导出为PMML格式。 您实际上是在Java生态系统中工作的&#xff0c;但没有动机为它编写PMML库或rest api。 然后&#xff0c;我将向您推荐LightningScorer &…

MySQL 如何实现 Oracle 的 row_number() over() 分组排序功能

文章目录Oracle 的分组排序MySQL 的分组排序分析需求创建模拟数据SQL 实现结果演示Oracle 的分组排序 Oracle 的分组排序函数的语法格式如下&#xff1a; ROW_NUMBER() OVER([PARTITION BY column_1, column_2,…][ORDER BY column_3,column_4,…] )说明&#xff1a;表示根据…

linux mac地址文件夹,android4.4.2系统的mac地址文件在哪个文件里面

android 是Linux内核,linux中mac地址是保存在/etc/init.d/networ 文件中的但是在android中mac地址是直接写在硬件中的,需要通过API 才能获取1、Android 获取本机Mac 地址方法&#xff1a;需要在AndroidManifest.xml文件中添加权限&#xff1a;public String getLocalMacAddress…

Windows 如何用命令终端(CMD)启动和停止 MySQL 数据库服务

当安装完 MySql 后&#xff0c;默认每次 Windows 启动的时候都会将 MySql 服务启动起来。那么如何通过命令方式来启动和停止 MySQL 服务呢&#xff1f; Windows XP 如果是 Windows XP 则不需要使用管理员权限既可以很简单的启动和停止 MySQL 数据库服务&#xff0c;具体在命令…

java与java ee_Java EE MVC:处理表单验证

java与java ee在本文中&#xff0c;我们将介绍Java EE MVC中的表单验证。 Java EE MVC与Java Bean验证API&#xff08; JSR 303 &#xff09;集成在一起&#xff0c;这使得添加验证约束变得非常容易。 使用JAX-RS方式进行验证 假设我们有一个小的html表单&#xff0c;可用于发…