标签: preg-replace

php正则表达式查找和替换

$string = '20110306';
$pattern = '(\d{6})(\d{2})';
$replacement = '$101';
echo preg_replace($pattern, $replacement, $string);
Run Code Online (Sandbox Code Playgroud)

我希望它回应 20110301

我使用http://gskinner.com/RegExr/来提出搜索和替换模式,也许我在更换找到的模式时遗漏了一些东西.

它给了我以下警告:

消息:preg_replace()[function.preg-replace]:未知修饰符'('

php regex preg-replace

1
推荐指数
1
解决办法
336
查看次数

使用preg_replace删除某些字符周围的空格

我有一个字符串,我想使用preg_replace删除某个字符周围的所有空格.就我而言,这个角色是/.

例如:

first part / second part 会成为 first part/second part

或者让我们说这个角色:现在是:

first part : second part 会成为 first part:second part

我找不到一个如何做到这一点的例子......谢谢!

php whitespace preg-replace

1
推荐指数
1
解决办法
3249
查看次数

如何在preg_replace中创建一个组可选?

我正试图取代: *facebook.com/http://graph.facebook.com/

我需要能够将facebook.com部件之前的任何内容分组到可选组中.
我不能代替facebook.comgraph.facebook.com,因为输入网址可能包含https.

这就是我所拥有的,但却错过了任何没有的东西http[s]://.

<?php
$fb_url = preg_replace('/http[s]*:\/\/[www.]*facebook.com\//', 'http://graph.facebook.com/', 'facebook.com/some/segments');
echo $fb_url;
?>
Run Code Online (Sandbox Code Playgroud)

php regex string url preg-replace

1
推荐指数
2
解决办法
2413
查看次数

如何使用preg_replace在数字之间添加点?

我正在使用名为Twilio的手机API,它可以发送文字.我正在制作一个电话号码验证脚本,它会生成一个"PIN"并呼叫用户并给他们提供针脚的东西,就像语音API所说的那样,例如.密码:2001年会说"二千零一".

我在想如果我在它们之间加点像PIN:2001 - > 2.0.0.1它会改变它,我猜我不得不preg_replace但我不知道将使用什么表达式.

这就是我生成PIN的方式:

$pin = substr(str_shuffle('1234567890'), 0, 4);
Run Code Online (Sandbox Code Playgroud)

php numbers preg-replace number-formatting twilio

1
推荐指数
1
解决办法
147
查看次数

正则表达式匹配HTML标记内的文本

我正在尝试编写一个正则表达式,删除占位符文本周围的HTML标记,以便:

<p>
    Blah</p>
<p>
    {{{body}}}</p>
<p>
    Blah</p>
Run Code Online (Sandbox Code Playgroud)

变成这样:

<p>
    Blah</p>
{{{body}}}
<p>
    Blah</p>
Run Code Online (Sandbox Code Playgroud)

我现在的正则表达式是/<.+>.*\{\{\{body\}\}\}<\/.+>/msU.但是,它还会删除占位符前面的标记内容,从而导致:

{{{body}}}
<p>
    Blah</p>
Run Code Online (Sandbox Code Playgroud)

我不能假设用户总是将占位符放在里面<p>,所以我希望它能够在占位符周围立即删除任何一对标签.我很感激帮助纠正我的正则表达式.

[编辑]

我认为重要的是要注意CKEditor可能会也可能不会处理输入.它为开始标记添加了换行符和制表符,因此正则表达式需要使用/sm(dotall + multiline)修饰符.

php regex preg-replace

1
推荐指数
1
解决办法
4238
查看次数

PHP中的preg/regex

我正在使用正则表达式.从来没有完全理解它真正的问题是:是否有人有一个很好的网站,解释表达之间的差异,而不只是发布像

$regexp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/";
Run Code Online (Sandbox Code Playgroud)

然后讨论整个线路的作用.而不是每个表达式将做什么.我已经尝试使用Google搜索许多不同版本的preg_replace和regex教程,但他们似乎都认为我们已经知道像\ b [^>]*会做什么.

二级.我试图这样做的原因:我想转

<span style="color: #000000">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)

<span style="color: #0000ff">*ANY NUMBER*</span>
Run Code Online (Sandbox Code Playgroud)

一些变种,我已经尝试过一些只是没有工作一些使脚本废话.

$data = preg_replace("/<span style=\"color: #000000\">([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);//just tried to match atleast 0-9

$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>(.*?)</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);

$data = preg_replace("/<span style=\"color: #000000\"\b[^>]*>([0-9])</span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)

这个具体问题的答案对我来说并不像一个网站那么重要,所以检查就是这样.尝试了很多不同的网站,我很确定它不高于我的理解我只是找不到一个好的所有坏教程/示例农场.W3和phpdotnet的正常回退不具备我这次需要的东西.

EDIT1对于那些最终在这里寻找类似答案的人:

$data = preg_replace("/<span style=\"color: #000000\">([0-9]{1,})<\/span>/", "<span style=\"color: #FFCC00\">$1</span>", $data);
Run Code Online (Sandbox Code Playgroud)

做了它需要的东西.可悲的是,这是我尝试的第一件事之一,但因为我没有放</ span>而不是它不起作用,我不知道"[0-9] {1,}"是否是最合适的匹配方式number(告诉它匹配任何整数0-9与[0-9]至少一次,尽可能多次与{1,},它仍然适合目的)

ROY Finley发布时间:http: //www.macronimous.com/resources/writing_regular_expression_with_php.asp 它是一个很好的网站,有一个表达式定义列表和一个很好的示例后续工作.

另外:regular-expressions.info/tutorial.html发布了几次.它是一个更慢,更深入的步行,但如果你被卡住,我就是它的好.

在我有机会玩它们之后,会弹出regex101和解析器.

EDIT2 DWright在"掌握正则表达式"下面发布了一个书籍链接.如果你看一下正则表达式并且无法对字符的卷积做出正面或反面,那么它绝对值得一试.花了大约一个半小时来阅读大约一半,但这与谷歌花费的时间相比没有时间,并且用来避免它的乱七八糟的工作.

下面链接的html解析也适用于这个特定问题.

php regex preg-replace html-parsing

1
推荐指数
1
解决办法
485
查看次数

具有累积效应的正则表达式

我有一个正则表达式,用连字符替换数字和空格.

/[^\s\d-]/
Run Code Online (Sandbox Code Playgroud)

这很好用,但是这里有一个机会让多个连字符彼此相邻,这是我不想要的.

如果传递了以下字符串: I am a bad str1 ng

我想要I-am-a-bad-str-ng只有单个连字符.是否可以更改正则表达式来执行此操作?

php regex preg-replace

1
推荐指数
1
解决办法
94
查看次数

PHP:从引号之间删除重复的单词

如何从以下字符串中的class =""之间删除重复项?

<li class="active active"><a href="http://netcoding.net/indev/sample-page/">Sample Page</a></li>
Run Code Online (Sandbox Code Playgroud)

请注意,所显示的课程可能会发生变化并处于不同的位置.

php regex preg-replace

1
推荐指数
1
解决办法
145
查看次数

如何排除特定域的正则表达式href匹配?

如何排除域的href匹配(例如one.com)?

我目前的代码:

$str = 'This string has <a href="http://one.com">one link</a> and <a href="http://two.com">another link</a>';
$str = preg_replace('~<a href="(https?://[^"]+)".*?>.*?</a>~', '$1', $str);
echo $str; // This string has http://one.com and http://two.com
Run Code Online (Sandbox Code Playgroud)

期望的结果:

This string has <a href="http://one.com">one link</a> and http://two.com
Run Code Online (Sandbox Code Playgroud)

php regex preg-replace

1
推荐指数
1
解决办法
976
查看次数

PHP preg_replace正在取代太多

码:

$string = "ABCD BEGIN LOL END ABCD";
$result = preg_replace("/BEGIN (.*?) END/","XD",$string);
Run Code Online (Sandbox Code Playgroud)

返回:ABCD XD ABCD,但我想返回ABCD BEGIN XD END ABCD,

怎么做到这一点?

php preg-replace

1
推荐指数
1
解决办法
110
查看次数