導航:首頁 > 編程語言 > 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正則相關的資料

熱點內容
網劇程序員那麼可愛15集完整版 瀏覽:172
pdf怎麼生成 瀏覽:933
pythondict樹 瀏覽:582
ilo2命令 瀏覽:292
會飲pdf 瀏覽:88
軟體加密到哪裡去了 瀏覽:604
nas可以做雲伺服器嗎 瀏覽:623
app利率怎麼算 瀏覽:8
廣電運通程序員 瀏覽:568
程序員放棄後會怎樣 瀏覽:189
河北模具編程 瀏覽:192
adb查找命令 瀏覽:325
安卓手機視頻文件夾怎麼打開 瀏覽:315
平板加密手機後怎麼關閉 瀏覽:573
流媒體伺服器應該注意什麼 瀏覽:540
d8命令編譯 瀏覽:971
壓縮包解壓需要多少空間 瀏覽:153
如何查找app屬性 瀏覽:393
android人臉識別技術 瀏覽:328
pc104編程 瀏覽:339