我需要讀取字符串$ mysting並替換e.x的所有事件。PHP preg match/replace?
<img src="dummypic.jpg alt="dummy pic">
與
<img src="dummypic.jpg alt="dummy pic" title="dummy pic">
換句話說,添加它缺少標題,使標題標籤具有相同的值作爲ALT標籤。
一些事件我有額外的參數,如邊界,與,高度 - 這些應該原封不動...
我需要讀取字符串$ mysting並替換e.x的所有事件。PHP preg match/replace?
<img src="dummypic.jpg alt="dummy pic">
與
<img src="dummypic.jpg alt="dummy pic" title="dummy pic">
換句話說,添加它缺少標題,使標題標籤具有相同的值作爲ALT標籤。
一些事件我有額外的參數,如邊界,與,高度 - 這些應該原封不動...
你真的想這樣做,使用HTML解析器,而不是正則表達式的。正則表達式不適合HTML處理。
請提供一個示例,而不是通用建議。 – mario 2011-03-04 15:02:20
以及OP沒有發佈他的代碼......我認爲任何人甚至都可以回答。 – 2011-03-04 15:04:18
而不是正則表達式,看看PHP DOMDocument來修改屬性,特別是如果會有任何複雜性。
你可以使用phpQuery或QueryPath做到這一點:
$qp = qp($html);
foreach ($qp->find("img") as $img) {
$img->attr("title", $img->attr("alt"));
}
print $qp->writeHTML();
雖然它可能是可行的,在這個簡單的情況下訴諸的正則表達式:
preg_replace('#(<img\s[^>]*)(\balt=)("[^"]+")#', '$1$2$3 title=$3', $h);
(它會更有意義使用preg_replace_callback確保沒有title =屬性存在。)
我的答案是一個衆所周知的答案的鏈接!
這將適合更好的評論 – Ikke 2011-03-04 22:43:50
我的答案是推薦給另一個答案,這符合完美的答案標準IMO – RobertPitt 2011-03-05 02:10:47
我平時寫在這些類型的情況下(通常與結構化數據,可能有不一致之處,如模板引擎標籤,條件等)迅速骯髒的黑客。海事組織是一個可怕的解決方案,但我可以以極快的速度轟出這些腳本。
例如,
<?
$html = '
<img src="dummypic.jpg" alt="dummy pic">
<img src="dummypic2.jpg" alt="dummy pic 2">
blahaahhh
<img src="dummypic.jpg" alt="dummy pic">
<img src="dummypic2.jpg" alt="dummy pic 2">
';
$tags = explode('<img', $html);
for ($i = 1; $i < count($tags); $i++)
{
$src = explode('src="', $tags[$i]);
$src = explode('"', $src[1]);
$src = str_replace('.jpg', '', $src[0]);
$tags[$i] = '<img title="' . $src . '"' . $tags[$i];
}
echo implode('', $tags);
http://tinyurl.com/cm8ea5 請發表一下你已經嘗試過的代碼,如果你需要社會更快速的響應。 – 2011-03-04 15:01:22
只是要注意,標題和替代是屬性,而不是標籤。技術上來說,圖像標籤不需要標題屬性,因爲屏幕閱讀器使用alt屬性,並禁用圖像以顯示圖像的描述,但這不是重點:-) – Alex 2011-03-04 15:05:56
[RegEx match open除XHTML自包含標記外的標記](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – RobertPitt 2011-03-04 15:09:06