안녕하세요.
<item name="color">#000000</item>
을
<item name="color">#FFFFFF</item>
으로 변경하는 php 정규식은 어떻게 되는지 도움을 받고 싶습니다.
|
답변 2개 / 댓글 1개
채택된 답변
+20 포인트
2017-10-28 (토) 15:19:18
다음과 같은 것을 원하시는지는 모르겠지만
참조하시죠.
$str = '<item name="color">#000000</item>';
$pattern = "#<item name=\"color\">(?P<color>[^<]+)<\/item>#i";
preg_match($pattern, $str, $matches);
if($matches['color'] == '#000000' || $matches['color'] == '#000'){
$s = array("#000000", "#000");
$r = array("#FFFFFF", "#FFF");
$str = str_replace($s, $r, $str);
echo $str;
}
2017-10-28 (토) 14:05:24
정규식으로는
Copy
$content = '<item name="color">#000000</item>123<item name="color">#000000</item>';
$content = preg_replace('!<item name="color">#000000</item>!', '<item name="color">#FFFFFF</item>', $content);
이지만 별다른 규칙이 필요없다면 굳이 성능이 떨어지는 정규식을 사용할 필요는 없습니다.
Copy
$content = '<item name="color">#000000</item>123<item name="color">#000000</item>';
$content = str_replace('<item name="color">#000000</item>', '<item name="color">#FFFFFF</item>', $content);
답변에 대한 댓글 1개
카카오툴즈
2017-10-28 (토) 14:19:50
답변을 작성하려면 로그인이 필요합니다.
컬러 값에 상응하는 새로운 값을 도출하여
변경하려고 합니다.
하여, 원본값 color 읽고, 그 이후 해당 값을 치환하고 싶습니다.
하여 str_replace 가 아닌 정규식이 필요로 합니다.
빠른 답변 감사드립니다.