首頁 > 後端開發 > PHP問題 > php正規如何不包含某一字串

php正規如何不包含某一字串

藏色散人
發布: 2023-03-07 18:12:01
原創
3413 人瀏覽過

php正規不包含某字串的方法:先建立一個PHP範例檔案;然後透過正規表示式「 preg_match(」/[^(abc)]/s」, $str, $arr); ”實現判斷不包含某字串即可。

php正規如何不包含某一字串

推薦:《PHP影片教學

#常見函數strstr($str, “abc” );
正規符合preg_match(”/(abc)?/is」, $str);
但是要符合一個字串中,不包含某字串,用正規就比較麻煩了
如果不用正則!strstr($str, “abc”); 就可以解決問題了
但是用正則呢,就只有這樣了,”/^((?!abc).)*$/is”

//------------------------------------------------ 
代码如下:
 <?php 
  $str = "dfadfadf765577abc55fd"; 
  $pattern_url = "/^((?!abc).)*$/is"; 
  if (preg_match($pattern_url, $str)){ 
  echo "不含有abc!"; 
  }else{ 
  echo "含有abc!"; 
  } 
  ?> 
 
 //------------------------------------------------ 
 结果为:false,含有abc! 
 $str = “2b3c4d5c”; 
 注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中, 
 preg_match(”/[^(abc)]/s”, $str, $arr); 
 其中字符 2 就不在 a b c 中,所以$arr返回值为2; 
 同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz” 
 “/(abc)[^((?!xyz).)*$]/s”
登入後複製

以下是補充:

判斷字串中是否含有另一個字串,有很多方法,如下:

1. 常見函數

strstr($str, "abc");
登入後複製

2. 正規符合

preg_match("/(abc)/is", $str);
登入後複製

但是要符合一個字串中,不包含某個字串,用正規就比較麻煩了。
1. 如果不用正規如下就可以解決問題

!strstr($str, "abc");
登入後複製

2. 但是用正規則呢,就只有這樣了

preg_match("/^((?!abc).)*$/is", $str);
登入後複製

完整程式碼範例

程式碼如下:

$str = "dfadfadf765577abc55fd"; 
 $pattern_url = "/^((?!abc).)*$/is"; 
 if (preg_match($pattern_url, $str)) 
 { 
 echo "不含有abc!"; 
 } 
 else 
 { 
 echo "含有abc!"; 
 }
登入後複製

結果為:false,含abc!

同時匹配,包含字串"abc",而且不包含字串"xyz"的正規表示式:

preg_match("/(abc)[^((?!xyz) .)*$]/is", $str);

此方法有效,本人使用方法如下:

 (?:(?!<\/p>).|\n)*? //匹配不含</p>的一个字符串
登入後複製

但最終使用中結果是發現,該方法效率極低,在處理非常短文字(要匹配該正則式的相同部分的有十幾個字,或者最多幾十個)時間可以考慮使用,但當用於大篇幅文章解析或多處需要改種匹配時間應不使用,考慮用其他方法替代(如:先解析出要匹配該段正則式的文字,然後驗證其中是否存在某段文字),正則表達式對於匹配不含特定字符串的文字段時並不是非常有效的方法.

以上是php正規如何不包含某一字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板