陷於PHP中的一個(相當簡單的)正則表達式問題。正則表達式基礎知識:在兩個常量之間抓取文本
文字的混亂是埋本節:
<tr>
<td id="descriptionArea">
Customer request to remove "Intro - 01/13/09" video clip.
<br/>
</td>
</tr>
我想無論是間:
descriptionArea">
......還有......
</td>
朋友建議:
$pattern = '<td="descriptionArea">\s*(.*?)\s*<';
$clean = preg_replace("'[\n\r\s\t]'","",$text); // to rid of line breaks
preg_match($pattern, $clean, $matches);
print_r($matches);
,但我得到了以下錯誤:
Warning: preg_match() [function.preg-match]: Unknown modifier 'q'
我想第二個問題的preg_match是否爲此正確的PHP函數,也。我應該使用ereg嗎?謝謝你的幫助。
還要注意OP的正則表達式不完整:它開始「
我懷疑它正在將&符解釋爲某種控制字符。然而,我找不到支持這一點的參考。
嘗試用
[&]
替換所有&
的實例。來源
2009-02-25 01:22:39 wombleton
你會想逃離「&」,就像wombleton說的那樣,並且還用正斜線包圍你的模式,比如$ pattern =「/ pattern /」;
下面的代碼返回與它的一些醜陋的東西,一個數組,但至少它返回匹配.. :)
編輯
這裏有一個更好的版本。擺脫所有的HTML編碼的,所以你可以使用標準的HTML的解析正則表達式:
來源
2009-02-25 01:29:00 SkippyFlipjack
如果你想抓住2個常數之間的文本,那豈不是更容易使用好醇」 strpos ?
EDIT
例如
我還沒有運行它,所以它可能是越野車,但你應該明白了。
來源
2009-02-25 01:34:49 ya23
+1不使用正則表達式! :) – leemes 2011-11-19 15:56:58
你對$ pattern使用了什麼?
我不知道PHP,但RegEx在我測試它時似乎在正則表達式設計器中工作。 (?s :)的選項是'Singleline On'。
馬克
來源
2009-02-25 01:41:55 lordhog
你所得到的特定錯誤來自使用該模式的第一個字符作爲分隔符參看preg_ *函數(在這種情況下,「&」),和在第二次出現分隔符後作爲修飾符的所有內容(例如「i」表示不區分大小寫)。
在這種情況下,它認爲您正在尋找
lt;td=
並且您想要修飾符quot;descriptionArea">\s*(.*?)\s*<
。第一個修飾符「q」沒有意義,它保釋。來源
2009-02-25 15:31:27
相關問題