草庐IT

lambda表达式

全部标签

PHP 用单个正则表达式模式替换所有实例

我有一个正则表达式,我想以最有效的方式用相应的替换数组替换匹配数组中的每个匹配项。例如,我有:$string='~~hello~~there,how~~are~~~~you~~?';$pattern='/~~(.*?)~~/';$replacements=array();$replacements[0]='hi';$replacements[1]='am';$replacements[2]='i';我想把$string变成:hithere,howami?最初我希望它会像这样简单:$string=preg_replace($pattern,$replacements,$string);但

PHP 正则表达式 : Difference between\s and\\s

我知道\s用于匹配空白字符,但有时我看到“\\s”用于预匹配并且工作正常。例如:if(preg_match("/\\s/",$myString)){//therearespaces}if(preg_match("/\s/",$myString)){//therearespaces}以上两个代码块有什么区别吗? 最佳答案 试图理解手册中的文字。http://php.net/manual/en/regexp.reference.escape.phpSingleanddoublequotedPHPstringshavespecialmea

PHP 正则表达式,preg_replace_callback,在 1 个字符串中有 2 个可能的匹配失败

我正在研究这个非常基础的类(class),以了解有关正则表达式的更多信息。我想要实现的是从testview文件中抓取内容,抓取恰好在{{EACHslides}}和{{#EACH}}之间的字符串。现在出现在类中的正则表达式就是这样做的,加上开始标记中的变量名。然后我想使用该字符串与正确的变量一起循环并将其放回原处。但是当我在我的View中使用2个EACH循环而不是1个时,它会严重失败。preg_replace_callback()将匹配第二个循环的第一个开始标记和最后一个结束标记,并给出如下字符串:"htmlbalalbal{{#EACH}}morehtmlblabla{{EACHnew

正则表达式 : lookbehind and lookahead and greediness problem

这应该很简单,但我是菜鸟,我一辈子也搞不懂。我正在尝试使用正则表达式来匹配特殊打开/关闭标签内的文本:[p2][/p2]所以在这段文字中:apple[p2]banana[/p2]grape[p2]lemon[/p2]它应该匹配“banana”和“lemon”。到目前为止,我使用的正则表达式是:(?但这太贪心了。它匹配以banana中的“b”开头,以lemon中的“n”结尾,匹配banana[/p2]grape[p2]lemon。我该如何搭配香蕉和柠檬? 最佳答案 应该这样做:(?我添加了问号以使量词成为非贪婪的。

php - 正则表达式检查是否存在确切的字符串,包括#

新问题正如Asaph在上一个问题中所建议的:Regextocheckifexactstringexists我正在寻找一种方法来使用Regex或建议的任何更好的方法来检查另一个字符串中是否存在完全匹配的字符串。我知道您告诉正则表达式匹配字符串开头或结尾的空格或任何其他非单词字符。但是,我不知道如何设置它。搜索字符串:#t应该匹配:字符串1:HelloWorld,很高兴见到你!#t字符串2:#THelloWorld,很高兴见到你!字符串3:HelloWorld,#t很高兴见到你!不应该匹配:字符串1:HelloWorld,很高兴见到你!字符串2:HelloWorld,很高兴见到你!#ta字

php - 使用命名模式子例程的 PCRE 正则表达式

我正在试验PHP的PCRE中的命名子模式/“子例程”正则表达式功能,我希望有人可以解释以下奇怪的输出:$re="/(?(DEFINE)(?a))^(?&a)$/x";var_dump(preg_match($re,'a',$match));//(int)1asexpectedvar_dump($match);//Array([0]=>'a')我不明白为什么命名组“a”不在结果中(内容为“a”)。将preg_match更改为preg_match_all会将“a”和“1”放入匹配数据中,但两者都只包含一个空字符串。我真的很喜欢以这种方式编写正则表达式的想法,因为您可以使它们变得非常强大,同

php - 用正则表达式包裹 <a> 标签中的链接

我需要在php中用带有正则表达式的“a”标签包裹文本中的所有链接,除了那些已经包裹的链接所以我有文本:Sometextwithhtmlherehttp://www.somelink.htmlhttp://www.somelink.com/view/?id=95http://anotherlink.htmlTitle我需要得到的:Sometextwithhtmlherehttp://www.somelink.htmlhttp://www.somelink.com/view/?id=95http://anotherlink.htmlTitle我可以用这个表达式匹配链接:(?:(?:http

PHP 正则表达式查找字符串开头的任意数字

我正在使用PHP,并希望能够创建一个正则表达式来查找并返回地址的街道号码部分。例子:1234-南大道。华盛顿特区,APT#306,ZIP45234在上面的例子中,只会返回1234。看起来这应该非常简单,但我还没有成功。任何帮助将不胜感激。 最佳答案 试试这个:$str="1234-SouthBlvd.WashingtonD.C.,APT#306,ZIP4523";preg_match("~^(\d+)~",$str,$m);var_dump($m[1]);输出:string(4)"1234"

php - 正则表达式截断长词并附加省略号

这道题对于识别长词有有效的解法:Regextoparselongwords然后我将如何以设定值截断它们并附加“...”基本上,我想在一个长字符串上应用preg_replace并截断任何很长的单词(不是截断整个字符串——只是截断长单词)。正则表达式风格应该是PHP。 最佳答案 编辑:这对我有用$pattern="/(?此模式有效匹配任何后跟空格的单词字符,以及前面有空格和10个单词字符的字符。然后像这样调用:preg_replace($pattern,"...",$string);希望对您有所帮助:)已编辑:实际上应该使用\s而不是空

php - php 或 zend 中国际电话号码验证的正则表达式是什么?

我有一个zend表单,其中有一个电话号码字段并且必须检查验证器。我决定为此使用正则表达式。我搜索了谷歌,但我得到的结果不起作用。谁能给我正则表达式。这是我的代码:$phone=newZend_Form_Element_Text('phone');$phone->setRequired(true);$phone->setLabel('Phone:')->addFilter('StripTags')->addValidator('NotEmpty',false,array('messages'=>'phonecannotbeempty'))->addFilter('StringTrim')