導航:首頁 > 編程語言 > php100正則

php100正則

發布時間:2022-08-31 13:46:53

php正則匹配如何截取前200個字元,跪求大神解答

如下是一個測試腳本,
<?php
$str
=
"abcd123456";
$pattern
=
'/^(.{0,6}).*?$/i'
preg_match($pattern,
$str,
$matches);
print_r($matches);
效果如下圖:
我看了你的$pattern,即/^(.{0,200}).*?$/i首先你使用了^.......$這個結構表示精確匹配某個字元串,逐個分析你的表達式,首先(.{0,200})表示匹配除" "外的0到200個字元,而^表示以(.{0,200})開頭,而後面的.*表示0個或多個單個字元,而.*?結合起來則表示使用懶惰模式,匹配任意數量的重復個字元,/i表示去區分大小寫,使用你的$pattern應該可以達到效果,同樣使用preg_match語法的話,則preg_match($pattern,
$str,
$matches);然後$matches[1]就會輸出第一個0到200字元組成的串(有200則輸出200個,沒有則輸出所有)

⑵ PHP 正則表達式 100分就是你的了!!

我不會PHP 只會正則。按照你給的html,(?<=name=").*?(?=") 可以匹配第一個,(?<=id=").*?(?=") 可以匹配第二個。注意,我這么寫是因為name和id這個屬性在你給的html語句中都是唯一的,如果不唯一那麼就要重新寫條件。

⑶ php如何進行正則替換

按照你的要求把h後的數字和w後的任意數字替換成固定數的php程序如下

<?php

$fix='555';//固定數

$str='asdasda/w/100/h/200/q/sdasdsad';

$regex1="~h/[0-9]+~";

$result=preg_replace($regex1,"h/".$fix,$str);

$regex2="~w/[0-9]+~";

$result=preg_replace($regex2,"w/".$fix,$result);

print_r($result);

?>
運行結果

asdasda/w/555/h/555/q/sdasdsad

⑷ PHP 正則表達式截取HTML

正則查詢的時候 使用 preg_match_all 函數吧

他能獲取 所有匹配的 字元串然後裝進 數組里。

還有你說的 多個行里的 匹配 找不出來 , 需要加 修飾符 s

可以這樣 preg_match_all("/<form>(.+)<\/form>/isU" , $string, $tea)

這里/ 後面加了 3個修飾符
i 是 不區分大小寫的匹配
s 是 帶有換行的 匹配
U 是非貪婪模式。匹配最少部分。

⑸ php正則表達式 取頁面指定內容

你好,現在ip138的ip地址沒有直接顯示在http://www.ip138.com/中 而是用的iframe,打開源文件可以看到:
<iframe src="http://www.ip138.com/ip2city.asp" frameborder="0" scrolling="no" width="100%" height="100%"></iframe>
所以你的 $str中沒有[]括起來的字元串,匹配失敗。

應該這樣:
$countfile="http://www.ip138.com/ip2city.asp/";
$mode="\[(.*)\]";//正則表達式 //簡單匹配[]中的所有內容,即ip地址
$str=file_get_contents($countfile);
preg_match($mode,$str,$arr);
print_r($arr);

⑹ PHP正則表達式高手來啊

你好,我雖然沒學過PHP,但是為了幫助你(還有你的100分)也稍微看了一下,這里說一下我的見解..不對的還請見諒
首先我不建議樓主先獲取字元串數組再用循環一一替換,看了一下preg_replace這個方法,我自己仿寫了一個
<?php
$string = "[<a href=?c=12&a=&l=2&p=2>2</a>] [<a href=?c=12&a=&l=2&p=3>3</a>] [<a href=?c=12&a=&l=2&p=4>4</a>] [<a href=?c=12&a=&l=2&p=5>5</a>] [<a href=?c=12&a=&l=2&p=6>6</a>] [<a href=?c=12&a=&l=2&p=7>7</a>] [<a href=?c=12&a=&l=2&p=8>8</a>] [<a href=?c=12&a=&l=2&p=9>9</a>] [<a href=?c=12&a=&l=2&p=10>10</a>] [<a href=?c=12&a=&l=2&p=2>下一頁</a>]";
$pattern = "/(\?c=)(\d+)(&a=&l=2&p=)(\d+)/g";
$replacement = "/list/\\2-\\4.html";
print preg_replace($pattern, $replacement, $string);
?>
上面的代碼是替換,先取得字元串,再替換,再拆分,這樣可以少一步循環
下面是拆分的正則表達式,根據[]作判斷,看了樓主寫的好象有點不太明白取什麼,我這里是取的每一個[],正則表達式為
/\[[^\]]*\]+?/g
說明一下每個符號的作用
\[ :轉義為符號"[" , \]意思相同
取[]中間的那些非"]"的內容, 最後的\]+?是非貪婪匹配,意思是取到一個符合的就停止,這樣不會把整個字元串都取了,如果樓主不想要兩端的[], 可以改成這樣
/(?<=\[)[^\]]*(?=\])+?/g
不消費兩端的[]號

以上代碼我沒在PHP里運行,只在別的語言上試了下可以,見笑了~~

PS:第一段代碼中$pattern正則中的&號必須要寫成"& amp ;"(無空格) 網路里不讓打出來,切記!

⑺ 求個php的驗證文本框內容的正則表達式

^[\p{Han}\p{N}\p{P}]{2,100}$

最好放入單引號中,並且使用unicode
'/^[\p{Han}\p{N}\p{P}]{2,100}$/u'
應該可以包括漢字、標點和數字

⑻ 急急急,PHP關於正則表達式的問題

根據你寫的這一句,表達式可以用:'/<a[^>]*href=([\'\"])([^\'\">]*)\\1[^>]*>/i'
如果鏈接的文字也要獲取的話,用'/<a[^>]*href=([\'\"])([^\'\">]*)\\1[^>]*>(.*?)<\/a>/i'

閱讀全文

與php100正則相關的資料

熱點內容
電學基礎pdf 瀏覽:726
cad插件怎麼編譯 瀏覽:617
網校源碼軟體 瀏覽:667
思科常用配置命令 瀏覽:377
水容易被壓縮嗎 瀏覽:753
java項目試題 瀏覽:315
為什麼安卓拍照沒有蘋果成相快 瀏覽:516
安卓版的蘋果手機叫什麼 瀏覽:373
手機怎麼解壓文件夾壓縮包 瀏覽:459
起源任務咋解壓 瀏覽:976
加密式的監督檢查 瀏覽:549
光遇怎麼分辨安卓國服和渠道服 瀏覽:242
ico解壓教程 瀏覽:632
程序員偏右 瀏覽:17
超算上可以進行vasp編譯嘛 瀏覽:174
北京通app怎麼注冊登錄 瀏覽:820
iphone上的數據怎麼轉移到安卓 瀏覽:743
python求每個時段平均值 瀏覽:244
安卓手機右上出現Hg什麼意思 瀏覽:69
程序員神經 瀏覽:753