たとえばこんな感じ
PHP
1<?PHP
2$pattern="/(?<=alt=['\"]).+(?=['\"])/";
3$replacement="hello world";
4$html=<<<eof
5test
6<img src="hoge.jpg" alt="hoge">
7<img src='fuga.jpg' alt='fuga'>
8test
9eof;
10$html = preg_replace($pattern, $replacement, $html );
11print htmlspecialchars($html);
ただしクォーテーション内のクォーテーションなど特殊な場合があるので
完璧にやるには例外処理が必要
一部修正
こうした方がより効率的かな
PHP
1<?PHP
2$pattern="/(?<=alt=(['\"])).+(?=\\1)/i";
3$replacement="hello world";
4$html=<<<eof
5test
6<img src="hoge.jpg" alt="hoge">
7<img src='fuga.jpg' alt='fuga'>
8<img src='piyo.jpg' Alt='piyo'>
9test
10eof;
11$html = preg_replace($pattern, $replacement, $html );
12print htmlspecialchars($html);
13?>
ちなみに(?<=)は肯定後読み、(?=)は肯定先読み
覚えると便利、\1は事前にヒットした['"]を再利用しています