정규식 관련 질문 한번 더 드립니다. 정보
정규식 관련 질문 한번 더 드립니다.본문
문자열을 치환하고 싶은데.
태그에 있는 내용은 치환하지 않고 순수 text만 치환하고 싶어요~
예) 'hello' 라는 단어를 치환하고 싶어요. 그런데 'hello' 가 독립된 단어일 때만 치환하고 싶어요.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=227947
변경전 :
hello<img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh hello<img src='' alt='hello'>hello hello
원하는 변경 :
<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh <a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a> <a href='tag.php?key=hello'>hello</a>
잘못된변경 :
<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a>everybody
yes<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a>friends
oh <a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a> <a href='tag.php?key=hello'>hello</a>
예제에서 'hello'이라는 단어가 총 9번 나옵니다. 그런데 태그 안에 있는 3개의 'hello'는 치환되면 안됩니다.
그리고 hello 가 독립된 단어일 때만 치환을 원하기 때문에 hellofriends 등은 치환되면 안됩니다.
알려주시면 감사하겠습니다~
태그에 있는 내용은 치환하지 않고 순수 text만 치환하고 싶어요~
예) 'hello' 라는 단어를 치환하고 싶어요. 그런데 'hello' 가 독립된 단어일 때만 치환하고 싶어요.
http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=227947
변경전 :
hello<img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh hello<img src='' alt='hello'>hello hello
원하는 변경 :
<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh <a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a> <a href='tag.php?key=hello'>hello</a>
잘못된변경 :
<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a>everybody
yes<a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a>friends
oh <a href='tag.php?key=hello'>hello</a><img src='' alt='hello'><a href='tag.php?key=hello'>hello</a> <a href='tag.php?key=hello'>hello</a>
예제에서 'hello'이라는 단어가 총 9번 나옵니다. 그런데 태그 안에 있는 3개의 'hello'는 치환되면 안됩니다.
그리고 hello 가 독립된 단어일 때만 치환을 원하기 때문에 hellofriends 등은 치환되면 안됩니다.
알려주시면 감사하겠습니다~
댓글 전체
실력이 안되는 건지 한번에는 안되네요.. -_-
<a...>hello hello 처럼 패턴적용 한번으로 다 찾아내지 못하는 경우를 어떻게 처리해야할지..
어쨋든 억지로 다음처럼 해봤네요. ^^;
$str = "hello<img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh hello<img src='' alt='hello'>hello hello hello";
echo preg_replace_callback('/(>|^)([^<]*?)\bhello\b(.*)/', "real_preg_replace", $str);
function real_preg_replace($matches) {
return $matches[1].$matches[2]."<a href='tag.php?key=hello'>hello</a>" . preg_replace_callback('/(>|^)([^<]*?)\bhello\b(.*)/', "real_preg_replace", $matches[3]);
}
<a...>hello hello 처럼 패턴적용 한번으로 다 찾아내지 못하는 경우를 어떻게 처리해야할지..
어쨋든 억지로 다음처럼 해봤네요. ^^;
$str = "hello<img src='' alt='hello'>helloeverybody
yeshello<img src='' alt='hello'>hellofriends
oh hello<img src='' alt='hello'>hello hello hello";
echo preg_replace_callback('/(>|^)([^<]*?)\bhello\b(.*)/', "real_preg_replace", $str);
function real_preg_replace($matches) {
return $matches[1].$matches[2]."<a href='tag.php?key=hello'>hello</a>" . preg_replace_callback('/(>|^)([^<]*?)\bhello\b(.*)/', "real_preg_replace", $matches[3]);
}
감사합니다~