看板 Web_Design 關於我們 聯絡資訊
假如我有一個字串 $str=' 一二三四http://www.google.com 五六七八<a href="http://www.google.com ">Google</a> '; 我希望能用正規表示式將所有超連結自動加上<a>的標籤 我的寫法是 if( strpos($str, "http") === true ){ $str = eregi_replace( '([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\1<a href="http://\2" rel="nofollow">\2</a>', $foo ); } 但現在遇到一個問題 假如一個字串中同時也有已經加上<a>標籤的網址 就會變成下面這樣 五六七八<a href="<a href="http://www.google.com "></a>">Google</a> 變成<a>標籤包住<a>標籤 有沒有辦法用正規表示式先判斷是否已經有<a>標籤 如果沒有再強迫加上<a>標籤呢? 感謝各位前輩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.71.47
tyf99:regex 可以順便檢查後面的 pattern 08/23 05:13
tyf99:/pattern(?=next)/ 可以判斷 pattern 後面的東西 08/23 05:21
tyf99:/pattern(?!=next)/ 這是判斷後面非 next 的樣式 08/23 05:21
tyf99:可以利用這個去判斷網址是不是被包在 <a> 裡面 08/23 05:22
抱歉我試了很久都試不出來@@ 也google不到資料 可以請前輩再講詳細點嘛? 假如我的 $pattern='([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)'; $next='<a +href="?([^"]+)"?>(.+)</a>'; 那我要怎麼寫呢? 還是說只有preg可以判斷?ereg不行呢 ※ 編輯: a517981 來自: 140.117.71.47 (08/23 14:23)
eight0:(?<!href=") 08/23 15:36
eight0:可以讓前面href="開頭的字串不符合規則 08/23 15:37
eight0:google 反向預查 08/23 15:37
a517981:我測試出來了!謝謝樓上兩位前輩 08/23 16:37