请问这个替换内容怎么写正则表达式?
一个php配置文件的内容
<?php
$title='nihao';
$content1='<b style="color:red;">欢迎!</b>
<a href="reg.php" class="btn">注册</a>
<a href="login.php" class="btn">登录</a>';
$content2='站点暂时关闭
开放时间未知';
?>
content1和content2里的内容都是换行的。
第一个变我量能替换内容,但是第二个变量就出问题了。请问怎么写正这个则表达式啊? ----------------------- 以下是精选回复-----------------------
答:你要替换什么内容
答:问题描述清楚些
答:http://php.net/manual/zh/reference.pcre.pattern.modifiers.php
答:匹配换行符?
答:不要使用 小数点 表示任何字符,使用[\S\s] 表示任何字符,这样不会受跨行影响。
答:先把问题写清楚,语句通顺怎么先得做到吧。
答:正则表达式加m和s结尾,m表示匹配多行,s表示.号匹配h换行符
答:. 匹配除换行符以外的任意字符
所以换行符是匹配不到的,正如5楼说的,换[\s\S]或[\w\W]都行,比如?.+换成[\w\W]+
答:哦,上面那个title匹配过多了,应该是勉强模式重复,应该是这个[\w\W]*?
答:$conn=preg_replace('/'.$name.'=\'[\w\W]*?\';/im',
$name.'=\''.$new_content.'\';',
$conn);
答:http://7xkxge.com1.z0.glb.clouddn.com/犯罪.jpg
答:我大概看懂了需求了,意思是想根据输入的属性名替换属性值?比如输入是 $name = 'href'; $new_content = 'test'
就把 config.php 改为 $content1='<b style="color:red;">欢迎!</b>
<a href="test" class="btn">注册</a>
<a href="test" class="btn">登录</a>';
如果是这样的话,把正则改一下就行了
$reg = '/(' . $name . ')="([^"]*)"/sim';
$conn = preg_replace($reg, '${1}="'.$new_content.'"', $content1);
答:不怕啊,因为正则是';结尾的,所以就会匹配到;分号结束,内容里不要同时';连着出现就没问题啊
答:修改配置不是应该直接使用$cfg = var_export(['name'=>'test'], true);这样生成的数组直接替换原文件么,正则替换不怕出错?
答:$conn=preg_replace('/'.$name.'=\'.+?\';/ims',
$name.'=\''.$new_content.'\';',
$conn);
0条评论