标签: preg-match

PHP preg_match和preg_match_all函数

我想知道它们preg_matchpreg_match_all功能的用途以及如何使用它们.

php preg-match-all preg-match

38
推荐指数
3
解决办法
4万
查看次数

PHP is_numeric或preg_match 0-9验证

这对我来说不是一个大问题(据我所知),这更像是我感兴趣的东西.但是什么的主要区别,如果有的话,使用的is_numeric超过preg_match(或反之亦然),以验证用户输入的值.

示例一:

<?php
    $id = $_GET['id'];
    if (!preg_match('/^[0-9]*$/', $id)) {
        // Error
    } else {
        // Continue
    }
?>
Run Code Online (Sandbox Code Playgroud)

示例二:

<?php
    $id = $_GET['id'];
    if (!is_numeric($id)) {
        // Error
    } else {
        // Continue
    }
?>
Run Code Online (Sandbox Code Playgroud)

我假设两者都完全一样,但是有什么具体的差异可能会在某种程度上引起问题吗?有没有"最好的方式"或者我没有看到的东西使它们与众不同.

php validation isnumeric preg-match

36
推荐指数
6
解决办法
18万
查看次数

将用户名验证为带下划线的字母数字

在我的注册页面上,我需要仅将用户名验证为字母数字,还要使用可选的下划线.我想出来了:

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^\w+$/',$str);
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但我不是一个正则表达式的专家!有没有人发现任何问题?

php regex preg-match

35
推荐指数
3
解决办法
6万
查看次数

未检测到正则表达式preg_quote符号

我在数据库中有一个发誓单词的字典,以下作品很棒

preg_match_all("/\b".$f."(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

$t是输入文本,简单地说,$f = preg_quote("punk"); "punk"是来自数据库字典,所以在循环的这一点上表达式如下

preg_match_all("/\bpunk(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

preg_quote替换符号,例如.#\\#这样的表达是逃过一劫,但如果词典的检查如."F@CK""A$$"与上述表达式输入字符串没有检测到这些符号,我都a$$f@ck在词典中,但它们不工作.如果我删除preg_quote()单词,则正则表达式无效,因为这些符号不会被转义.

有关如何检测的任何建议"a$$"???

编辑:

所以我想那些没有按预期工作的表达将是例如.

preg_match_all("/\bf\@ck(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)

哪个应该找到f @ ck in$t

更新:

这是我的用法,简单地说; 如果有$m替换它们的匹配"\*\*\*\*",则整个块在循环中通过字典中的每个单词,$f是字典单词并且$t是输入

$f = preg_quote($f);
preg_match_all("/\b$f(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
if (count($m) > 0) {
     $t = preg_replace("/(\b$f(?:ing|er|es|s)?\b)/si","\*\*\*\*\*",$t);
}
Run Code Online (Sandbox Code Playgroud)

更新:看,var_dump:

preg_quote($f) = string(5) "a\$\$"
$t = string(18) "You're such an a$$"
expression = string(29) …
Run Code Online (Sandbox Code Playgroud)

php regex profanity preg-match

35
推荐指数
2
解决办法
2897
查看次数

可选的空白正则表达式

我在尝试忽略某些字符之间的空格时遇到了问题.我一直在谷歌搜索几天,似乎无法找到正确的解决方案.

这是我的代码:

// Get Image data
preg_match('#<a href="(.*?)" title="(.*?)"><img alt="(.*?)" src="(.*?)"[\s*]width="150"[\s*]height="(.*?)"></a>#', $data, $imagematch);
$image = $imagematch[4];
Run Code Online (Sandbox Code Playgroud)

基本上这些是我的一些场景:

 <a href="/wiki/File:Sky1.png" title="File:Sky1.png"><img alt="Sky1.png" src="http://media-mcw.cursecdn.com/thumb/5/56/Sky1.png/150px-Sky1.png"width="150" height="84"></a>
Run Code Online (Sandbox Code Playgroud)

(注意width =""和src =""之间没有空格)

<a href="/wiki/File:TallGrass.gif" title="File:TallGrass.gif"><img alt="TallGrass.gif" src="http://media-mcw.cursecdn.com/3/34/TallGrass.gif" width="150"height="150"></a>
Run Code Online (Sandbox Code Playgroud)

(注意在width =""和height =""之间缺少空格.)

无论如何要忽略这些角色之间的空白?因为我不是正则表达式专家.

php regex preg-match removing-whitespace

35
推荐指数
1
解决办法
5万
查看次数

PHP preg_replace/preg_match vs PHP str_replace

任何人都可以快速总结一下差异吗?

在我看来他们都做同样的事情?

谢谢

php preg-replace preg-match str-replace

34
推荐指数
3
解决办法
4万
查看次数

Preg匹配空字符串

如何preg_match为null(空)字符串?

我需要这样的东西:

/([0-9]|[NULL STRING])/
Run Code Online (Sandbox Code Playgroud)

regex preg-match

32
推荐指数
2
解决办法
4万
查看次数

31
推荐指数
1
解决办法
6万
查看次数

preg_replace如何在选择器中仅替换匹配的xxx($ 1)yyy模式

我正在尝试使用正则表达式来仅擦除字符串的匹配部分.我正在使用该preg_replace函数,并试图通过在匹配部分周围加上括号来删除匹配的文本.例:

preg_replace('/text1(text2)text3/is','',$html);
Run Code Online (Sandbox Code Playgroud)

这会用''代替整个字符串.我只想删除text2,但保留text1和text3.如何匹配和替换匹配的字符串部分?

php regex replace preg-match regex-group

30
推荐指数
3
解决办法
3万
查看次数

通过PHP preg_match匹配多行模式

如何通过此HTML代码中的PHP preg_match正则表达式模式匹配主题:

      <table border=0>
  <tr>
  <td>


  <h2>subject</h2>



    </td>
Run Code Online (Sandbox Code Playgroud)

所有的空格和换行都是故意留下的.所以问题是使用一些多线模式提取主题名称?

regex preg-match

29
推荐指数
3
解决办法
8万
查看次数