douzhizao0270 2012-06-24 07:19
浏览 49
已采纳

PHP preg_match使用RegEx来匹配一个单词

I want to find all the demo words using PHP and regEx.

$input ='demo';
$pattern = ''; //$input can be used along with regex, please help here 
$text = 'This is dem*#o text, contains de12mo3 text, is .demo23* text' 

if(preg_match($pattern, $text))
{
 echo 'found';
}else{
 echo'not found';
}

the search word demo in the text may be present in the following format

1) may start with special characters/numbers Eg. "12*demo"
2) may contain special characters/numbers within the word Eg.  "de12*mo"
3) may end with special characters/numbers Eg. "demo12*"

please help I am stuck, thanks in advance!

Note: The $input can be max. of 15 in length

  • 写回答

3条回答 默认 最新

  • dongliantong3229 2012-06-24 07:27
    关注

    The Solution

    I would start by removing all special characters and numbers from the string, and then matching the word using word boundaries:

    $cleaned = preg_replace('/[^a-z ]+/i', '', 'This is dem*#o text, contains de12mo3 text, is .demo23* text');
    
    preg_match_all('/\bdemo\b/i', $cleaned, $matches, PREG_OFFSET_CAPTURE);
    
    var_dump($matches);
    

    Will give you (Codepad Demo):

    array(1) {
      [0] => array(3) {
        [0] => array(2) {
          [0] => string(4) "demo"
          [1] => int(8)
        }
    
        [1] => array(2) {
          [0] => string(4) "demo"
          [1] => int(27)
        }
    
        [2] => array(2) {
          [0] => string(4) "demo"
          [1] => int(40)
        }
      }
    }
    

    Explanation

    The first line replaces any characters in your string (called the subject argument) that match /[a-z ]+/i with '', essentially removing the characters. The regex matches any character (or group of characters) that is not (^) the letters a-z or a space. The i flag tells regex that the search should be case insensitive (This saves us from writing a-zA-Z).

    The next line uses word boundaries to match the word 'demo'. However, you could substitute in any word.

    New Regex Techniques

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)