草庐IT

php - 使用 checkdnsrr 验证电子邮件,是好还是坏的解决方案?

我正在使用下面的代码来验证电子邮件if(checkdnsrr($domain,"MX")){echo'mx-pass';}else{echo'mx-fail';}我的愿望是检查域是否有效并且是否有MX记录。我已经在使用正则表达式来检查电子邮件格式,但人们输入了类似someone@gmail.con的内容,这显然是错误的,但通过了基本格式验证。我想进一步验证,但我不想走得太远而得到假阴性。有没有人发现我的解决方案有任何问题或有更好的方法? 最佳答案 您的解决方案非常好!但是,在您进行DNS调用之前,我建议您先使用FILTER_VALI

php - 删除字符串中连续的重复单词

我正在尝试编写一个函数来删除字符串中连续的重复单词。保留正则表达式找到的任何匹配项至关重要。换句话说……Averyveryverydirtydog应该变成...Averydirtydog我有一个似乎运行良好的正则表达式(basedonthispost)(\b\S+\b)(($|\s+)\1)+但是我不确定如何使用preg_replace(或者如果有更好的函数)来实现它。现在,我让它删除了所有匹配的重复单词,而没有完整保留该单词的一个副本。我可以解析变量或特殊指令以保持匹配吗?我现在有这个...$string=preg_replace('/(\b\S+\b)(($|\s+)\1)+/',

php - 用不间断空格替换多个空格

当超过一个空格时,如何用 替换除第一个(白色)空格之外的所有空格?特别要求与php的preg_replace一起使用,所以PCRE。"Thisismytext."应该转换成"Thisis    mytext." 最佳答案 您似乎只需要替换前面有另一个空白符号的每个空白即可。使用基于回顾的方法:(?参见regexdemo.(?是一个正向后视,它要求在当前位置之前立即出现一个空格,但该空格不会被消耗,因此不会被替换。下面是一个PHPdemo:$s="Thisismytext.";echopreg_

php - 按空格分隔但忽略双引号字符串的正则表达式

我知道/[\s]+/'用空格分割字符串。我正在尝试扩展它以忽略双引号内的任何空格。所以我希望HelloWorld被拆分,而不是"HelloWorld"preg_split('/[\s]+/',$string)是我在PHP中使用的表达式。 最佳答案 您可以使用PCRE动词(*SKIP)(*FAIL)告诉正则表达式跳过表达式的特定部分。所以:".*?"(*SKIP)(*FAIL)|\s+将跳过双引号字符串。这是一个regex101演示:https://regex101.com/r/eBP67C/1/您可以在这里阅读更多相关信息,http

php - 多维数组目录映射

我正在尝试获取多维数组中的目录结构。我做到了这一点:functiondirtree($dir,$regex='',$ignoreEmpty=false){if(!$dirinstanceofDirectoryIterator){$dir=newDirectoryIterator((string)$dir);}$dirs=array();$files=array();foreach($diras$node){if($node->isDir()&&!$node->isDot()){$tree=dirtree($node->getPathname(),$regex,$ignoreEmpty)

php - 如何使用正则表达式在最后一次模式出现后捕获字符?

我目前正在使用这个匹配模式的最后一次出现:__(?:.(?!__+))+$模式是“__”但是,我需要匹配模式之后的字符而不是模式本身。例如,给定字符串my__field__name__options我需要捕获“选项”,但上面的正则表达式捕获了“__options”。 最佳答案 如果没有先行,你可以在PHP中使用这个正则表达式:.*__\K.+RegExDemo正则表达式分解:.*#matchzeroormorecharacters(greedymatch)__#match"__"\K#resetmatchedinfo.+#match

php - 使用正则表达式删除字符串中不需要的字符

我正在尝试使用以下示例删除与特定模式不匹配的字符:精确匹配4个字母[a-zA-Z]{4}后跟空格\s{1,}然后是4个字符开头的模式一个字母表,最后3个数字[a-zA-Z]{1}[0-9]{3}如果我提供ABEHA501;生物学L340;生物学Z620;Q799;ABEHA501它匹配除Q799之外的所有内容,现在,我需要从字符串中删除/替换Q799。我尝试申请NegatedCharacterClasses但仍然没有得到想要的结果。$mystring="ABEHA501;BIOLL340;BIOLZ620;Q799;ABEHA501";$string=preg_replace("/[^

php - php 中的正则表达式- 从字符串中捕获 9 种类型的数字

我刚开始编码,对PHP中的正则表达式有一些小问题。我正在尝试从字符串中捕获以下数字类型。0000000000-000000000-00000000-000.000.00.00-000.000.00.0-000.000.00-0000000000-000000000-00000000-当然,0代表0-9之间的数字。这是我试过的模式:$pattern="/\d{3}[.]\d{3}[.]\d{2}[.]?\d{1-2}?/";这里有问题,但我不明白是什么?你能帮帮我吗? 最佳答案 看来你可以用/\b\d{3}([.\s]?)\d{3}\

php - 正则表达式:如何不替换任何 html 标签中的特定单词?

让我们假设我有这样一段文字:Thisisagreattest!We'retestingsomethingawesome.Clickheretotestit!.我想给“test”这个词添加一些颜色,但如果它在a标签中则不行。我试过这样做:/(?)test/但它不起作用。它是这样工作的:/(?)test/当然我有很多链接,所以这不是一个选项。整个代码应该是这样的:$replacement=preg_replace('/(?)test/','test',$replacement);预期结果:Thisisagreattest!We'retestingsomethingawesome.Click

php - 如何在 PHP 中使用正则表达式查找完全匹配项?

尝试用PHP中的正则表达式模式匹配我的URL时遇到一些问题。我的正则表达式:/article/([0-9A-Za-z]++)/post/([0-9A-Za-z-_]++)publicfunctionmatches(Route$route){$uri=filter_var(strip_tags($_SERVER['REQUEST_URI']),FILTER_SANITIZE_URL);if(preg_match('#'."/article/([0-9A-Za-z]++)/post/([0-9A-Za-z-_]++)".'#i',$uri,$this->matches)){returntr