草庐IT

php正则表达式和汉字

我正在尝试提取日期“25/01/2005”、公司名称“AOneInvestmentCompanyLimited大一投资有限公司”、中文名称“大一投资有限公司”和许可证号“来自此字符串的ABG896":名称:AOneInvestmentCompanyLimited大一投资有限公司(ABG896)牌照日期:25/01/2005备注但是我不知道如何将包括中文符号在内的所有数据提取到一个数组中。 最佳答案 如果你的字符串编码为utf-8,设置/u模式并使用\p{L}来匹配unicode字母或者使用\X作为.的替代品。请注意\X匹配换行符,而

php - 如何验证正则表达式本身?

我需要验证用户输入,这可能是他/她自己的应用程序中过滤字段的正则表达式,我如何检查该正则表达式的有效性? 最佳答案 将其传递到对preg_match()的虚拟调用中,并查看它是否返回false(表示错误)?注意:根据您打算在何处运行此应用程序,我会质疑允许用户执行此操作的决定。您可能正在为拒绝服务攻击做好准备;恶意用户需要做的就是提供一个非常长、复杂的正则表达式字符串,您的服务器将逐渐停止运行。 关于php-如何验证正则表达式本身?,我们在StackOverflow上找到一个类似的问题:

php - 使用正则表达式按长度过滤字符串

我正在尝试使用具有此模式的正则表达式验证输入字段[A-Za-z]{,10}我希望它只在输入字段中发送10个或更少的字符时才找到匹配项,我遇到的问题是它将匹配所有少于10个字符的单词。有没有办法判断输入字段中是否有超过10个字符返回为false,还是用php执行strlen更好? 最佳答案 如果您需要验证它只是字母顺序,请不要使用strlen()。相反,在您的正则表达式上放置边界(^$):/^[A-Za-z]{,10}$/ 关于php-使用正则表达式按长度过滤字符串,我们在StackOve

php - 正则表达式 - 单个字符子句的字符串开始和字符串结束 anchor

对NOOB因素感到抱歉,但这两个regi(regex复数lol)有什么不同?http://codepad.viper-7.com/vaQTMh 最佳答案 正如您所注意到的,第一个具有字符串anchor的开始/结束。因此,只有当您给它的字符串包含[A-Z]范围内的正好一个字符时,它才会匹配。第二个没有anchor,匹配包含[A-Z]范围内至少一个字符的字符串,在其内容的任何位置。请花一些时间阅读有关正则表达式的内容(例如此处的http://www.regular-expressions.info/)。这是非常基本的。

php - 这个正则表达式在做什么?

我在自定义的脚本中找到了这个正则表达式。谁能告诉我它在做什么?functiontest($text){$regex='/([\x00-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3})|./x';returnpreg_replace($regex,'$1',$text);} 最佳答案 在捕获组内部有四个选项:[\x00-\x7F][\xC0-\xDF][\x80-\xBF][\xE0-\xEF][\x80-\xBF]{2}

替换字符串中的 PHP preg_quote

我使用preg_replace并且我想在替换字符串中包含一个url。我如何引用该字符串?看来preg_quote仅适用于搜索模式。$replace='\1'.addslashes($url).'\3'.addslashes($title).'\4'; 最佳答案 需要逃避addslashes是不够的preg_quote转义太多参见thisdemo.正如Mario评论的那样,您可以使用addcslashes($str,"\\$")。 关于替换字符串中的PHPpreg_quote,我们在Sta

php - 为什么 ereg ("^\d{11}$",18311111111) 是假的?

我的代码是:我弄错了?为什么? 最佳答案 因为ereg不支持\d,所以需要使用[0-9]。并且ereg已弃用,请改用preg_match,然后您可以使用\d。if(preg_match("/^\d{11}$/",$phone)){echo"true";}else{echo"false";} 关于php-为什么ereg("^\d{11}$",18311111111)是假的?,我们在StackOverflow上找到一个类似的问题: https://stackove

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 - 如何使用 str_getcsv() 并忽略引号之间的逗号?

这是我当前的代码。示例数据:"Bill,RoseMary","asasd,test",吐出来了Array([0]=>\"Bill[1]=>RoseMary\"bill@co.bill.ca.us[2]=>\"asasd[3]=>test\"test@co.test.ca.us[4]=>)我希望将姓名和电子邮件放在一起而不是分开。我错过了什么? 最佳答案 $da_data=str_getcsv($da_data,",","'");//^会按照你想要的方式阅读:'Bill,RoseMary','asasd,test',^^^^但您不会像

php - 回退到 RegEx 中的字符串开头

是否可以让RegEx回退到字符串的开头并重新开始匹配?这就是我问的原因。给定以下字符串,我想捕获子字符串black、red、blue和green按照该顺序,无论主题字符串中出现的顺序如何,并且仅当所有子字符串都存在于主题字符串中时。$str='blue-ka93-red-kdke3-green-weifk-black'因此,对于以下所有字符串,RegEx应捕获black、red、blue和green(按顺序)'blue-ka93-red-kdke3-green-weifk-black''green-ka93-red-kdke3-blue-weifk-black''blue-ka93-b